问题描述
有一第三方程序(可能是VC++写的),会不定时向一dat文件里写一状态参数;我需要写一个C#程序,定时(使用Timer)读取这dat文件里的参数。现在我发现只要我的C#程序一直读取时,第三方程序有时就写不进去dat文件。请问各位大牛,我程序里应该怎么写读取方法才能不影响第三方程序写文件?
解决方案
解决方案二:
会不定时向一dat文件里写一状态参数-》无法确定dat文件什么时候未使用。所以应该没有办法。
解决方案三:
publicstaticFileStreamOpen(stringpath,FileModemode,FileAccessaccess,FileShareshare)
可以看看打开的各种模式是否有作用
解决方案四:
这样的情况,不单要与只读方式打开data文件,而且,需要共享锁。还必须要选择flieShare方式为ReadWrite。因为随时有其他程序对其进行写操作。
解决方案五:
单纯读取文件是可以采用Shared方式,它不会影响写操作。实际上当你读取数据、在内存中处理数据一通之后,将来写文件的那一瞬间才真正需要互斥。我们可能不经意地写这种程序时用的是“既读又写”的模式打开文件,造成了无法打开文件。但是即使如此,其实许多时候最好的方法是使用统一的日志服务或者数据库机制来共享处理数据。服务的例子,例如你的另一个进程应该可以提供一个接口方法来读取数据,数据是从它自己管理的内存中的缓存中来,而不让其它进程随便去打开它自己的文件,甚至根本不知道它自己的文件是否存在、在哪个私有的环境目录下保存。
解决方案六:
比如说,如果你读取了文件之后迅速关闭连接,然后才开始你的数据分析工作,也是一种可以减小冲突几率的办法。
解决方案七:
再比如说有些日志程序,假设它打开abc.dat文件要写数据,发现打开失败,那么它立刻就会自动创建一个abc_1.dat这样的文件来写数据,如果下次再遇到冲突则自动创建abc_2.dat这样的文件来写数据.........要是你遇到这类“第三方程序”,那么就是一个好事儿,说明人家的程序以前一定是很好的生存经历、比较成熟。