我正在编写一些代码来查看(日志)文件。我使用 Notepad++ 来更新文件。
我收听更改事件,有时文件被锁定,即使我在文件读取周围有一个锁定语句。
就像StreamReader或FileStream释放文件但操作系统(带有dotnet4.5.1的win8)保持锁定更多时间?
我知道 Changed 事件被调用两次的警告,但 lock 语句应该处理它。我想。到目前为止。
private static object _fileLock = new Object();
..
_watch.Changed += new FileSystemEventHandler(watch_Changed);
..
void watch_Changed(object sender, FileSystemEventArgs e)
{
lock (_fileLock)
{
using (var sr = new FileStream(_pathAndFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
// read in file...
sr.Close();
}
}
}