我正在使用 Tasks 在我的 ViewModel 中运行长时间的服务器调用,使用TaskScheduler.FromSyncronizationContext()
将结果传回到Dispatcher
。例如:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
当我运行应用程序时,这个方法可以正常工作。但是当我在Resharper
中运行我的NUnit
测试时,在调用FromCurrentSynchronizationContext
时会出现以下错误消息:
当前同步上下文不能用作任务计划程序。
我猜这是因为测试在工作线程上运行。如何确保测试在主线程上运行?欢迎任何其他建议。
TaskScheduler.FromCurrentSynchronizationContext()
,导致执行被延迟到另一个线程。在 lambda 外获取上下文可以解决这个问题。 - M.kazem Akhgary