public static void RunSynchronouslyTest() { Task.Factory.StartNew(delegate { CoreRunSynchronouslyTest(); }).Wait(); // Executing RunSynchronously() on a task whose cancellationToken was previously signaled CancellationTokenSource cts = new CancellationTokenSource(); CancellationToken ct = cts.Token; Task t1 = new Task(delegate { }, ct); // Notice we aren't throwing an OCE. cts.Cancel(); try { t1.RunSynchronously(); Assert.True(false, string.Format("RunSynchronouslyTest: > error: Should have thrown an exception")); } catch (InvalidOperationException) { // Assert.True(false, string.Format("RunSynchronouslyTest: > properly threw exception: {0}", e.Message)); } catch (Exception e) { Assert.True(false, string.Format("RunSynchronouslyTest: > error: threw wrong exception: {0}", e.Message)); } // Executing RunSynchronously() on a continuation task t1 = new Task(delegate { }); Task t2 = t1.ContinueWith((completedTask) => { }); try { t2.RunSynchronously(); Assert.True(false, string.Format("RunSynchronouslyTest - continuation task: > error: Should have thrown an exception")); } catch (InvalidOperationException) { // Assert.True(false, string.Format(" > properly threw exception: {0}", e.Message)); } catch (Exception e) { Assert.True(false, string.Format("RunSynchronouslyTest - continuation task: > error: threw wrong exception: {0}", e.Message)); } t1.Start(); t1.Wait(); // Executing RunSynchronously() on promise-style Task Task<int> f1 = new TaskCompletionSource<int>().Task; try { f1.RunSynchronously(); Assert.True(false, string.Format("RunSynchronouslyTest - promise-style Task: > error: Should have thrown an exception")); } catch (InvalidOperationException) { //Assert.True(false, string.Format(" > properly threw exception: {0}", e.Message)); } catch (Exception e) { Assert.True(false, string.Format("RunSynchronouslyTest - promise-style Task: > error: threw wrong exception: {0}", e.Message)); } }