我想知道以下代码是否会带来任何性能提升:
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/