void Loop() { while (!token.IsCancellationRequested) { using (var reader = new LogReader(memoryStream, true)) { while (memoryStream.Position < memoryStream.Length) { list.Add(processor.ReadEvent(reader, bufferHeader)); } done.SetResult(true); } WaitForWork.WaitOne(); } }