我在WebApi应用程序和WPF应用程序中玩TPL。 在WPF应用程序中,我得到了以下代码,正如我所期望的那样。
private void Button_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("UI thread: " + Thread.CurrentThread.ManagedThreadId);
Task.Factory.StartNew(() => Debug.WriteLine("Task 1 thread: " + Thread.CurrentThread.ManagedThreadId))
.ContinueWith(ant =>
{
Debug.WriteLine("Continuation on UI thread: " + Thread.CurrentThread.ManagedThreadId);
Task.Factory.StartNew(
() => Debug.WriteLine("Task 2 thread is UI thread: " + Thread.CurrentThread.ManagedThreadId));
},
TaskScheduler.FromCurrentSynchronizationContext());
}
但是在webApi应用程序中,内部的嵌套任务continuewith永远不会被调用。 据我所知,唯一不同的是SynchronizeContext。 有谁知道为什么在WebApi中永远不会调用嵌套任务?