void TryReceiveNextMessage(CancellationToken token) { var parallelOperation = _parallelOperationsManager.TryBegin(); if (!parallelOperation.CanContinue()) { _backoffStrategy.Wait(); return; } TryAsyncReceive(token, parallelOperation); }
void TryReceiveNextMessage(CancellationToken token) { var parallelOperation = _parallelOperationsManager.TryBegin(); if (!parallelOperation.CanContinue()) { _backoffStrategy.Wait(); return; } void LogException(Task task) { var exception = task.Exception; if (exception == null) { return; } _log.Error(exception, "Unhandled exception in thread worker"); } TryAsyncReceive(token, parallelOperation) .ContinueWith(LogException, TaskContinuationOptions.OnlyOnFaulted); }