Eu tenho um aplicativo (Win 32 bits) que disponibiliza um conjunto de dados alterados para outras máquinas de rede, gravando um arquivo de dados de cerca de 100 kbytes por segundo. Outros PCs leem o mesmo arquivo uma vez por segundo para acessar e exibir os dados em locais remotos. As colisões são esperadas e ocorrem de vez em quando e são tratadas abrindo o arquivo no modo apropriado. Se um dado escravo não puder abrir o arquivo porque está sendo gravado, não há consequências resultantes do acesso negado - ele o obtém da próxima vez.
O sistema funciona sem problemas no WinXP há vários anos, mas acaba de ser instalado em uma rede Windows 8 e está se comportando mal.
Após um período de tempo - geralmente muitas horas e, às vezes, dias - o PC "mestre" para de atualizar o arquivo - todo acesso é retornado The process cannot access the file because it is being used by another process
- para que os escravos vejam dados "congelados" a partir de então. A situação é permanente, no entanto, e o único curso de ação é sair do aplicativo mestre e reiniciar o PC mestre - sair do aplicativo mestre não libera o arquivo.
Alguém tem alguma sugestão para o que poderia estar causando isso?
O SysInternals ProcessExplorer ajudaria (usando a função "localizar")?
Uma observação final: o arquivo de dados usado para disponibilizar as informações é nomeado com uma extensão MSI
. O Windows 8 poderia ter introduzido algumas funções de "babá" para impedir que os aplicativos fizessem referência ao que pensam ser imagens do instalador do MSI? Estou agarrando canudos aqui. Naturalmente, pretendo tentar outra coisa como uma extensão, mas o acesso ao sistema é difícil, pois faz parte de um sistema 24-7-365, por isso quero reunir o máximo de conhecimento antes disso.
Such frequent access to a static file by many machines isn't very efficient.
Eu não entendo por que você diz isso? No meu PC, a gravação deste arquivo leva 15 mS e a leitura de 4 mS. Essa sobrecarga é aceitável para nós, e não tenho certeza se o MySQL seria mais rápido. A razão pela qual estou tendo problemas de bloqueio é porque não está funcionando como acredito que deveria.