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

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

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 的类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值