protected void MonitorTailOfFile() { var message = string.Empty; using (FileStream fs = new FileStream(fifoPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs)) { while (continueMonitoringFile) { while (!sr.EndOfStream && continueMonitoringFile) { message = sr.ReadLine(); if (!string.IsNullOrEmpty(message)) { messageParser.ParseReceivedMessage(message); } } while (sr.EndOfStream && continueMonitoringFile) { Thread.Sleep(100); } message = sr.ReadLine(); if (!string.IsNullOrEmpty(message)) { messageParser.ParseReceivedMessage(message); } } } } }