public void GetResult_ThrowOnBackgroundThread() { var cts = new CancellationTokenSource(); var awaitable = new MainThreadAwaitable(_mainThread, cts.Token); cts.Cancel(); Action a = () => awaitable.GetAwaiter().GetResult(); a.ShouldThrow<OperationCanceledException>(); }
public async Task Await_OnDispatcherThread() { var awaitable = new MainThreadAwaitable(_mainThread); await awaitable; Thread.CurrentThread.ManagedThreadId.Should().Be(_mainThread.ThreadId); Action a = () => awaitable.GetAwaiter().GetResult(); a.ShouldNotThrow(); }
public void IsCompleleted_DispatcherThread() { var awaitable = new MainThreadAwaitable(_mainThread); Thread.CurrentThread.ManagedThreadId.Should().Be(_mainThread.ThreadId); awaitable.GetAwaiter().IsCompleted.Should().Be(true); }
public void IsCompleleted_BackgroundThread() { var awaitable = new MainThreadAwaitable(_mainThread); Thread.CurrentThread.ManagedThreadId.Should().NotBe(_mainThread.ThreadId); awaitable.GetAwaiter().IsCompleted.Should().Be(false); }