public void LogReader_ReadFileBeingWrittenToWithMultiLineEntries_CorrectNumberOfEntriesRead() { // Arrange string filePath = Path.Combine(tempPath, "logfile.txt"); File.Create(filePath).Close(); int numberOfEntriesExpected; int numberOfEntriesRead; // Act using (StreamReader reader = new StreamReader(File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) { LogReader logReader = new LogReader(reader); logReader.StartReading(); using (StreamWriter writer = new StreamWriter(File.Open(filePath, FileMode.Open, FileAccess.Write, FileShare.Read))) { LogStreamProducer producer = new LogStreamProducer(); numberOfEntriesExpected = TestData.ISsLogEntries.Count; producer.StartISsLogEntriesToStream(writer); while (producer.IsWriting()) { Thread.Sleep(500); } } while (logReader.MoreEntriesAvailable()) { Thread.Sleep(200); } logReader.StopReading(); numberOfEntriesRead = logReader.Entries.Count; } // Assert Assert.AreEqual(numberOfEntriesExpected, numberOfEntriesRead); }