使用此代码用于非常基本的记录器:
lock (string.Concat("LogWritter_", this.FileName))
{
using (var fileStream = File.Open(this.FileName, FileMode.Append, FileAccess.Write, FileShare.Read))
{
using (var w = new StreamWriter(fileStream))
{
w.Write(message);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我从几个线程同时尝试它时,我很快得到错误:
The process can't access the file because its being used by another file.
Run Code Online (Sandbox Code Playgroud)
为什么锁不会阻止线程同时访问文件?
如果线程将同一实例或不同实例调用到同一文件,则无关紧要.另外我认为这可能是因为在Windows中编写文件时会有一些延迟,但在Linux上也会发生同样的事情.
Dictionary<string,object>使用文件路径作为密钥创建并存储锁定对象.
前一阵子,我接近同样的问题:
| 归档时间: |
|
| 查看次数: |
626 次 |
| 最近记录: |