Ist es möglich, eine Datei mit Lesesperre zu versehen?

Ich entwickle eine Anwendung, die nach Änderungen sucht, die von einem separaten Programm (das nicht von mir geschrieben wurde) an einer Datei vorgenommen wurden.

Wenn eine Änderung festgestellt wird, wird die Datei geöffnet, die letzte Zeile gelesen und die Datei geschlossen.

Ich verwende den folgenden Code, um sicherzustellen, dass mein Programm nicht versucht, die Datei zu sperren, sondern sie nur im Lesemodus öffnet:

FileStream fs =
    new FileStream(
        _scannerFilePath,
        FileMode.Open,
        FileAccess.Read,
        FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs);
var str = sr.ReadToEnd();
sr.Close();
fs.Close();

Leider erhalte ich immer noch die folgende Fehlermeldung, wenn mein Programm versucht, die Datei zu lesen:

System.IO.IOException was unhandled
    Message="The process cannot access the file 'D:\\LSDATA\\IdText.txt' because it is being used by another process."
    Source="mscorlib"
    StackTrace:
        at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
        at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
        at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
        at LiquorSafe.Verification.Main.CheckLastScannedUser(String changedFileName)
        at LiquorSafe.Verification.Main.OnChanged(Object sender, FileSystemEventArgs e)
        at System.IO.FileSystemWatcher.OnChanged(FileSystemEventArgs e)
        at System.IO.FileSystemWatcher.NotifyFileSystemEventArgs(Int32 action, String name)
        at System.IO.FileSystemWatcher.CompletionStatusChanged(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* overlappedPointer)
        at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
    InnerException: 

Gibt es einen möglichen Grund dafür?

Könnte es sein, dass das andere Programm irgendwie @ i read-locked die Datei und hindert mich so daran, sie überhaupt zu lesen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage