(로그) 파일을 볼 수있는 코드를 작성 중입니다. 메모장 ++를 사용하여 파일을 업데이트합니다.
변경 이벤트를 수신하고 때때로 파일을 읽는 데 주변에 lock 문이 있어도 파일이 잠길 수 있습니다.
StreamReader 또는 FileStream은 파일을 릴리스하지만 운영 체제 (win8 with dotnet4.5.1)는 이 잠시 더 잠금을 유지합니다?왜 내가 FileSystemWatcher.Changed 및 StreamReader 또는 FileStream을 잠글 때 (...) {...} 그 파일을 잠글까요?
나는 Changed 이벤트가 twice이라고하는 경고를 알고 있지만 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();
}
}
}
lock 문은 파일과 아무 관련이 없습니다. C#에는 파일 관련 기능이 없습니다. 그것은 너무 전문화 될 것입니다. – usr