예제 #1
0
 public BacklogItem(IRedisCommand redisCommand, CancellationToken cancellationToken, TaskCompletionSource <T> taskCompletionSource, AbstractResultProcessor <T> abstractResultProcessor, Client.RedisClient redisClient, PipeReader pipe)
 {
     RedisCommand            = redisCommand;
     CancellationToken       = cancellationToken;
     TaskCompletionSource    = taskCompletionSource;
     AbstractResultProcessor = abstractResultProcessor;
     RedisClient             = redisClient;
     PipeReader = pipe;
 }
예제 #2
0
        public async Task SetResult()
        {
            try
            {
                var result = await AbstractResultProcessor.Start(RedisClient, PipeReader, CancellationToken);

                TaskCompletionSource.TrySetResult(result);
            }
            catch (OperationCanceledException)
            {
                TaskCompletionSource.TrySetCanceled();
                throw;
            }
            catch (Exception e)
            {
                TaskCompletionSource.TrySetException(e);
                throw;
            }
        }