예제 #1
0
        public static async Task ExchangerGracefulShutdown()
        {
            using var exchanger = new AsyncExchanger <int>();
            var task = exchanger.ExchangeAsync(42);

            False(task.IsCompleted);
            Equal(42, await exchanger.ExchangeAsync(52));
            Equal(52, await task);
            True(exchanger.DisposeAsync().IsCompletedSuccessfully);
        }
예제 #2
0
        public static async Task ExchangerGracefulShutdown2()
        {
            using var exchanger = new AsyncExchanger <int>();
            var task        = exchanger.ExchangeAsync(42);
            var disposeTask = exchanger.DisposeAsync();

            False(disposeTask.IsCompleted);
            await ThrowsAsync <ObjectDisposedException>(exchanger.ExchangeAsync(52).AsTask);
            await ThrowsAsync <ObjectDisposedException>(task.AsTask);

            await disposeTask;
        }