c# - 在 Silverlight 中调用 Dispatcher.CheckAccess() 是好的形式吗?

标签 c# multithreading silverlight user-interface dispatcher

我想知道以下代码是否会带来任何性能提升:

if (Deployment.Current.Dispatcher.CheckAccess())
{
    DoUIWork();
}
else
{
    Deployment.Current.Dispatcher.BeginInvoke(() =>
    DoUIWork());
}

Dispatcher 是否足够聪明,可以在不必要时将分派(dispatch)短路到 UI 线程?

最佳答案

与检查相比,我不能说调度程序在从 UI 线程调度到自身时是否做了任何昂贵的事情。但是来自 UI 线程的 BeginInvoke 的行为可能与直接执行操作不同,因为它至少被放入队列而不是立即调用。如果您之后直接有代码,您可以区分这与删除条件语句之间的区别。

当然值得了解控制流,足以知道差异是否无关紧要。

关于c# - 在 Silverlight 中调用 Dispatcher.CheckAccess() 是好的形式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7949027/

相关文章:

javascript - cefsharp 从 C# 执行 Javascript

c# - 如何使用 C# 从 Web 客户端浏览本地网络?

c++ - 如何在 C++ 中初始化线程局部变量?

apache-flex - 处理异步控制结构(Fluent Interface?)

silverlight - 一个不错的 Silverlight 3.0 引用应用程序,有源码吗?

Silverlight 4 ItemsControl 内存泄漏

c# - 如何使用 Microsoft Office Interop word 选择段落的第一行或(前 20 个字符)。?

c# - 使用命名空间外部的 T4 模板位置

objective-c - iOS 对上传任务进行排队

windows - Qt 相当于 Win32 Fibers