lock (fileName)  ,只是锁定了fileName对象(String),对文件本身并无多大作用和意义。

解决方案 »

  1.   

    一般是定义一个静态的对象 来LOCK
      

  2.   

    因为你lock的是函数的参数,相当于局部变量,所以根本无效。
    即便你lock了私有静态变量,但是也lock不住别的程序对文件的访问。
      

  3.   

    有点复杂,自己没有做过,说下思路。
    因为要锁定的对象是不固定的,所以不能直接用lock来锁定。应该先建立一个锁定状态表,比如可以用一个数组,当有线程正在访问文件时,把文件名放到表里,访问完成以后从表里移除。这样,线程在访问文件前,先查询状态表中是否已经有这个文件,如果有就等待,直到其它线程完成访问后再继续。
    为了避免其它程序对文件的访问,可在打开文件时使用FileShare参数对文件设置共享锁,这样在文件打开的期间,其它进程是无法对文件进行指定的某些操作的。