我有两个进程需要访问同一个文件,其中两个进程都有可能会对文件进行读写,如果当某一个进程操作文件的过程中,另一个进程又同时需要操作这个文件,就会出现文件正在被另一进程访问的异常。有没有方法可以让一个进程在访问时,令一个进程等候第一个进程访问结束后在进行访问呢?注意,是进程,不是线程。谢谢大家!

解决方案 »

  1.   

    使用Lock关键字,详情参见MSDN
      

  2.   

    没有办法预先“等待”。你可以在捕获这个确定的exception之后,让进程Sleep一个短暂的时间,然后重新循环读取这个文件。控制总的循环次数,例如10次。控制Sleep时间,例如先是50毫秒,第二次是100毫秒,第三次是200毫秒...
      

  3.   

    最好的办法是文件只归属一个网关进程所有,然后其它进程控制进程进行tcp(或者其它,例如命名管道)通讯来操作。这个时候,你设计的不是文件,而是业务服务。
      

  4.   


                Mutex mu = new Mutex(false, "filewrite");
                int x = 0;
                while (x < 4)
                {
                    mu.WaitOne();
                    Console.WriteLine("enter");
                    Thread.Sleep(5000);
                    Console.WriteLine("exit");
                    mu.ReleaseMutex();
                    Thread.Sleep(1000);
                    x++;
                }两个进程都调用命名Mutex。上面的代码生成exe后可以打开两个进程测试一下。