public void StartWork() { if (thread == null) { thread = new Thread(new ThreadStart(Loop)); thread.Start(); } else { WaitForWork.Set(); } }
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(); } }
internal void Stop() { cancellationTokenSource.Cancel(); WaitForWork.Set(); }