我正在寫一些代碼來觀看(日誌)文件。我使用Notepad ++來更新文件。
我聽取更改事件,有時文件被鎖定,即使我的文件讀取周圍有lock聲明。
這就像StreamReader或FileStream發佈文件,但操作系統(win8和dotnet4.5.1)鎖定更多時間?爲什麼FileSystemWatcher.Changed和StreamReader或FileStream會鎖定文件,即使我鎖定(...){...}它?
我知道更改事件的警告名爲twice,但鎖定語句應該照顧它。我想。到現在。
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();
}
}
}
鎖定語句與文件無關。 C#不包含任何文件特定的功能。這太專業了。 – usr