多进程访问log文件

     很多人都写过如何用C#写log文件,但是有的时候我们会遇到这种情况:

     我们会有多个进程同时被开启,并试图往log文件里面写信息,那么我们应该如何解决这种问题呢?

在C#中提供了FileShare类,我们可以通过这个来设置文件的share属性:

    FileStream fileStream;     
    if (File.Exists(paths)) 
    { 
      fileStream = new FileStream(path, FileMode.Append, FileAccess.Write, FileShare.ReadWrite); 
    } else 
    { 
      fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite); 
    } 
    writer = new StreamWriter(fileStream);
 

但是在实际使用过程中,发现当一个进程占用文件的时候会block其他进程写入数据,所以我们应该尽量在使用的时候打开,使用完毕的时候关闭:

writer.Close(); 
fileStream.Close();

posted on 2011-03-14 16:49  hibix  阅读(779)  评论(0编辑  收藏  举报

导航