最佳答案
我使用 任务在我的 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
的调用中得到错误消息:
当前的 SynchronizationContext 不能用作任务计划程序。
我猜这是因为测试是在工作线程上运行的。如何确保测试在主线程上运行?欢迎任何其他建议。