lock (fileName) ,只是锁定了fileName对象(String),对文件本身并无多大作用和意义。
解决方案 »
- aspx 页面中用menu控件做的菜单,win7 IE浏览器中 子菜单点击无效,
- 关于利用正则表达式删指定内容问题
- 如何将\r\n保存在mdb中?
- 关于HttpWebRequest的post问题
- 求助:一直用vb.net+sql server做开发,~如果转c#难吗?多长时间达到vb.net相应水平?
- 如何在windows应用程序中实现本地计算机的浏览功能啊?
- 如何管理众多的控件?(c#winform)
- 为什么模拟按键有时候会失效啊
- 关于System.Collections.DictionaryBase
- 推荐一本书
- PHP序列化的字段格式如果用C#来解析?
- chart控件的Legend和Series都是"图例"的意思吗?
即便你lock了私有静态变量,但是也lock不住别的程序对文件的访问。
因为要锁定的对象是不固定的,所以不能直接用lock来锁定。应该先建立一个锁定状态表,比如可以用一个数组,当有线程正在访问文件时,把文件名放到表里,访问完成以后从表里移除。这样,线程在访问文件前,先查询状态表中是否已经有这个文件,如果有就等待,直到其它线程完成访问后再继续。
为了避免其它程序对文件的访问,可在打开文件时使用FileShare参数对文件设置共享锁,这样在文件打开的期间,其它进程是无法对文件进行指定的某些操作的。