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); }
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; }