多进程访问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();