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