我们发现了一些奇怪的事情,代码看起来像这样:
var task = new Task(...); // run in the background, do something lengthy work
task.ContinueWith(..., TaskScheduler.FromCurrentSynchronizationContext());
task.Start();
第二个任务调用了一个事件,该事件尝试更新GUI,我们遇到了可怕的跨线程异常。
从第二个任务中的方法检查 Thread.CurrentThread.ManagedThreadId
指示它实际上并没有在UI线程上运行。
生成任务的代码正在UI线程上运行。
是否存在任何可能导致出错的情况?
TaskScheduler.FromCurrentSynchronizationContext
返回的内容。你这样做时会发现什么? - usr