我们正在观察一些奇怪的东西,代码如下:
var task = new Task(...); // run in the background, do something lengthy work
task.ContinueWith(..., TaskScheduler.FromCurrentSynchronizationContext());
task.Start();
那里的第二个任务调用一个事件,该事件反过来尝试更新 GUI,我们得到了可怕的跨线程异常。
从第二个任务中的方法检查Thread.CurrentThread.ManagedThreadId
表明它实际上没有在 UI 线程上运行。
生成任务的代码在 UI 线程上运行。
是否有任何情况会出错?