Deployment.Current.Dispatcher.BeginInvoke(()=> {…})有什么用?

我在一些代码中看到过这种Deployment.Current.Dispatcher.BeginInvoke(()=> {…})格式。它曾经在后台做过一些工作吗?它的一般用途是什么?

不,它不是在后台线程中工作 – 它是在UI线程上工作。 所以它通常从后台线程调用 ,以便操作UI,这只能在UI线程上完成。

lambda表达式的主体是您要在UI线程中执行的代码。

当更新UI的代码从UI线程以外的线程执行时,会发生无效的跨线程访问exception。

调度程序允许您将一些代码从另一个线程传递到UI线程。

我在这篇文章中提出的项目,以及其他概念。

WindowsClient,HttpWebRequest和Windows Phone 7上的UI线程

你需要使用Deployment.Current。 当您发现自己在非UI工作线程中工作(在不从DependencyObjectinheritance的上下文中)并且您需要更新UI时,SilverLight应用程序中的Dispatcher 。