private void Read_Task() { using (new ActivityTracer("Read async")) { foreach (var parserTask in _asyncTaskQueue.GetConsumingEnumerable()) { parserTask.RunSynchronously(); if (parserTask.Exception != null) { bool is_fatal = !CanHandleException(parserTask.Exception); if (TaskReadExceptionOccurred != null) { TaskReadExceptionOccurred(parserTask, new UnhandledExceptionEventArgs(parserTask.Exception, is_fatal)); } if (is_fatal) { ActivityTracer.Error(parserTask.Exception); throw parserTask.Exception; } else { ActivityTracer.Warn(parserTask.Exception); } } } } }