Well .. I wouldn't be using the FileSystemEventHandler OnChanged event to attempt to get every line/group of lines added - there's too much buffering etc going on, and have a look here
FileSystemWatcher.Changed Event (System.IO) | Microsoft Docs[
^] about the number of events that can be raised - JSOP a programmer here in CodeProject demonstrated this nicely in code, the first of his cases in this article
FileSystemWatcher - Pure Chaos (Part 1 of 2)[
^]
Here's what I have done in the past
1) I used the FileSystemEventHandler OnChanged event to say when an 'external process' started writing to the log file.
2) I then had the equivalent of a 'tail' written in c# that I used to scan the lines of the log-file
3) The tail (and process) would stop when the required data was found or the external process indicated in the log file it had finished (there are other ways of handling this)
There was a C# Tail implementation I found that I used as the model for mine ...