I have an application (Win 32-bit) which makes a changing data set available to other network machines by writing a data file of around 100 kbytes every second. Other PC's read the same file once per second to access and display the data in remote locations. Collisions are expected and occur now and then and are handled by opening the file in the appropriate mode. If any given slave can't open the file because it is being written there are no consequences resulting from it being denied access - it just gets it the next time around.
The system has run with no problems under WinXP for several years but has just been installed on a Windows 8 network and is behaving badly.
After a period of time - usually many hours, and sometimes days - the "master" PC stops updating the file - every access returns The process cannot access the file because it is being used by another process
- so the slaves see "frozen" data from then onwards. The situation is permanent however, and the only course of action is to exit the master application and restart the master PC - just exiting the master application does not release the file.
Does anyone have any suggestions for what could be causing this?
Would SysInternals ProcessExplorer help (using the Find handle" function)?
A final note: the data file that is used to make the information available happens to be named with an extension MSI
. Could Windows 8 have introduced some "nanny" functions to prevent applications referencing what it thinks might be MSI installer images? I'm clutching at straws here. Naturally I intend to try something else as an extension, but access to the system is difficult as it forms part of a 24-7-365 system, so I want to gather as much knowledge before then.
Such frequent access to a static file by many machines isn't very efficient.
I don't understand why you say that? On my PC writing this file takes 15 mS and reading it 4 mS. This overhead is acceptable to us, and I'm not sure MySQL would be any faster. The reason I am having locking problems is because it's not working as I believe it should.