C# 文件正由另一进程使用解决方案(流共享方式与锁方式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011508145/article/details/79570274

其主要触发的原因,文件正在被读写时,读写时间过大没有来得及关闭读写流,这时另一程序进行访问,文件被前一个程序独占

1.将文件流变为共享:

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);

StringBuilder sb = new StringBuilder();
while (!sr.EndOfStream)
{
sb.AppendLine(sr.ReadLine());
}

2.将文件进行锁,访问者依次等待

2.1方式:

public static ReaderWriterLockSlim logWriteLock = new ReaderWriterLockSlim();

public  void  WriterXML()
{
      try
      {
         logWriteLock.EnterWriteLock();
         //wait code....
      }
      catch (Exception ex)
    {
        Log.Error("Global.asax Fire Error:", ex.ToString());
    }
     finally
    {
       logWriteLock.ExitWriteLock();
    }
}
2.2 可以使用lock(ojbect) 方式进行锁,全局锁需设计一个封装lock 的类

猜你喜欢

转载自blog.csdn.net/u011508145/article/details/79570274