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

Vay*_*age 19 c# silverlight-4.0 windows-phone-7

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

Jon*_*eet 41

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

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

  • 同样重要的是,在现有UI操作队列为空之后,可以从UI线程本身使用BeginInvoke到UI线程上的后续操作.基本上推迟工作,直到UI线程不再做任何事情. (8认同)

Mic*_*k N 6

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

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

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

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