我有一个文本文件,现在需要实现:
  可能有多个进程对该文件同时写入,请教怎么实现?
  我打开文件十指定了:FileShare.Write 
  但还是报告:进程无法访问文件,因为该文件正由另一进程使用  我看:
  Write 
受 .NET Framework 精简版的支持。
 允许随后打开文件写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求(由此进程或另一进过程发出的请求)都将失败。但是,如果指定了此标志,仍可能需要附加权限才能访问文件。 这个:仍可能需要附加权限才能访问文件  到底是附加什么权限,如何实现,请指点?

解决方案 »

  1.   

    FileStream fs = new FileStream( filename,FileMode.Open,FileAccess.Write,FileShare.Write );
      

  2.   

    为什么每个进程都要打开一次文件呢
    可不可以在主线程中打开一个StreamWriter,不要关闭,所有进程都用此sw来写文件呢
      

  3.   

    FileStream fs = new FileStream( filename,FileMode.Open,FileAccess.Write,FileShare.Write );这个样子根本没用  我也这样做的 仍可能需要附加权限才能访问文件  这句话 表示了这样做依然可能无法实现   所以我想问这话是什么意思
      

  4.   

    thoughter(绝对零度·冰封の刺猬) ( ) 信誉:100  2006-06-30 11:18:00  得分: 0  
     
     
       为什么每个进程都要打开一次文件呢
    可不可以在主线程中打开一个StreamWriter,不要关闭,所有进程都用此sw来写文件呢
      
     这个不可以  程序允许条件决定了的
      

  5.   

    使用Mutex每个程序在打开文件,进行写的时候,用mutex包含,例如:Mutex mUnique = new Mutex( false, "UniqueNameString" );//Set a unique name
    mUnique.WaitOne();
    //Write file heremUnique.ReleaseMutex();
      

  6.   

    不明白MSDN里的莫名其妙的文字~
      

  7.   

    原因:一个文件的写指针在同一时刻只能给一个人
    解决方法:最简单就是设置一个信号量,互斥量
    如果是多进程,建议用互斥量mutex,他是在mem中直接开的一个量,各个进程都能看到