我以前使用Dispatcher或设置SynchronizationSetting但是由于切换到PCL(Profile 158),我留下了FromCurrentSynchronization,Default或Current。我认为FromCurrentSynchronization意味着类的syncContext。真的吗?我该如何检查?
目前班级使用
private async Task asyncInvoke(Action action)
{
await Task.Factory.StartNew(action,
CancellationToken.None,
TaskCreationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext());
}
如果我坚持使用实用程序类,它最终是否会获取实用程序类的syncContext?
答案 0 :(得分:1)
FromCurrentSynchronizationContext
正是您正在寻找的。它根本与“阶级”无关。
正如汉斯所说,一种思考方式是它是当前线程的属性。
在您的情况下,基于Dispatcher
的UI将为与调度程序关联的UI线程提供SynchronizationContext
。验证这一点的简便方法是查看SynchronizationContext.Current.GetType().Name
。
但是,我建议您考虑采用更激进的方法。您当前正在尝试从后台线程逻辑更新UI。尝试重新构建代码,以便后台线程逻辑根本不知道UI(例如,请参阅the Progress Reporting section on this page on MSDN)。如果你能做到这一点,你会发现你的代码更容易测试,并且可以更好地分离关注点。