我正在使用Tasks在ViewModel中运行长时间运行的服务器调用,并且使用Dispatcher
将结果整理回TaskScheduler.FromSyncronizationContext()
上。例如:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
当我执行应用程序时,这工作正常。但是,当我在
NUnit
上运行Resharper
测试时,我在调用FromCurrentSynchronizationContext
时收到以下错误消息:我猜这是因为测试是在工作线程上运行的。如何确保测试在主线程上运行?任何其他建议,欢迎。
最佳答案
您需要提供一个SynchronizationContext。这是我的处理方式:
[SetUp]
public void TestSetUp()
{
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
}
关于c# - 当前的SynchronizationContext不能用作TaskScheduler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8245926/