我正在使用下一个代码来记录Web应用程序的错误。System.IO.IOException:进程无法访问文件'.txt',因为它正在被另一个进程使用
using (StreamWriter myStream = new StreamWriter(sLogFilePath, true))
{
myStream.WriteLine(string.Format("{0, -45}{1, -25}{2, -10 {3}", guid, DateTime.Now, StringEnum.GetStringValue(enumMsg), sText));
}
有时候,以下异常“System.IO.IOException:该进程无法访问该文件“因为它正由另一个进程使用” .TXT被抛出。
我认为这是由web应用程序的多个实例同时引起的。你能帮我解决这个问题吗?
编辑:我要补充的是,我每次登录这样的方法:
日期 - 方法X开始。
日期 - Exception.Message(找不到表或其他错误)
日期 - 方法X停止。
而且出现这个错误时,系统也只会记录本:
日期 - System.IO.IOException:该进程无法访问文件的.txt',因为它正由另一个进程使用。
它可能会改善情况,但它并没有完全解决它。原因是另一个进程可能在调用IsFileLocked和创建StreamWriter之间打开文件。 –
您可能会遇到的另一个问题是,在非常高的负载下,一个线程可能会阻塞另一个线程。这是因为没有队列来确保等待的线程最终能够看到。线程可以释放对文件的锁定并在另一个线程的检查之间进行请求。另外,因为这是在每次尝试之间暂停轮询文件时,等待的线程可能会使用大量的CPU。 –