Silverlight中的this.Dispatcher.BeginInvoke()和Deployment.Current.Dispatcher.BeginInvoke()方法之间的区别

时间:2011-09-26 11:05:45

标签: silverlight silverlight-4.0 mvvm

我知道Dispatcher.BeginInvoke()用于在UI线程中执行一些代码。最后我注意到有另一种方法可以通过使用“部署”类来获取Dispatcher实例。我想知道

this.Dispatcher.BeginInvoke() Deployment.Current.Dispatcher.BeginInvoke()函数的调用?和

之间是否存在差异?

何时应该使用 this.Dispatcher.BeginInvoke() Deployment.Current.Dispatcher.BeginInvoke()

由于 亚历

1 个答案:

答案 0 :(得分:11)

简短回答:它们在Silverlight中是相同的,因此请使用较短的一个(如果在代码的上下文中可用)。

this.Dispatcher.BeginInvoke()确保它在相关控件运行的线程上运行。

Deployment.Current.Dispatcher.BeginInvoke()确保它在主UI线程上运行。

Silverlight中的两个总是相同的(在WPF中通常是相同的,除非你创建了额外的UI线程)。

除非您当前的上下文没有调度程序,否则请使用this.Dispatcher.BeginInvoke(),然后使用全局调度程序。