public void DrainingTaskQueueShutsQueueOff() { var queue = new TaskQueue(); queue.Enqueue(() => TaskAsyncHelper.Empty); queue.Drain(); Task task = queue.Enqueue(() => TaskAsyncHelper.FromError(new Exception())); Assert.True(task.IsCompleted); Assert.False(task.IsFaulted); }
private static Task Drain(TaskQueue queue, ILogger logger) { if (queue == null) { return TaskAsyncHelper.Empty; } var tcs = new TaskCompletionSource<object>(); queue.Drain().Catch(logger).ContinueWith(task => { tcs.SetResult(null); }); return tcs.Task; }