TaskScheduler.FromCurrentSynchronizationContext()是否表示类的上下文?

时间:2013-12-12 22:28:51

标签: c# asynchronous

我以前使用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?

1 个答案:

答案 0 :(得分:1)

FromCurrentSynchronizationContext正是您正在寻找的。它根本与“阶级”无关。

正如汉斯所说,一种思考方式是它是当前线程的属性。

在您的情况下,基于Dispatcher的UI将为与调度程序关联的UI线程提供SynchronizationContext。验证这一点的简便方法是查看SynchronizationContext.Current.GetType().Name

但是,我建议您考虑采用更激进的方法。您当前正在尝试从后台线程逻辑更新UI。尝试重新构建代码,以便后台线程逻辑根本不知道UI(例如,请参阅the Progress Reporting section on this page on MSDN)。如果你能做到这一点,你会发现你的代码更容易测试,并且可以更好地分离关注点。