示例#1
0
        void TryReceiveNextMessage(CancellationToken token)
        {
            var parallelOperation = _parallelOperationsManager.TryBegin();

            if (!parallelOperation.CanContinue())
            {
                _backoffStrategy.Wait();
                return;
            }

            TryAsyncReceive(token, parallelOperation);
        }
示例#2
0
        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);
        }