从后台线程通知UI线程

And*_*w M 14 c# silverlight multithreading windows-phone-7

我试图在后台下载一些页面,其内容将被插入到数据库中.

我需要在某种后台线程上执行此操作(BackgroundWorker或ThreadPool,由于我可以排队的方式,这是首选),但我还需要在作业完成时更新UI.

如何通知UI线程在Windows Phone上完成作业?

我见过有人使用Dispatcher.beginInvoke,但不清楚他在使用什么(工作者或游泳池) - 这是正确的方法吗?

Mo *_*our 22

 Deployment.Current.Dispatcher.BeginInvoke(() =>
 {
      // change UI here
 });
Run Code Online (Sandbox Code Playgroud)

Dispatcher允许您在线程上运行一段代码.

Deployment类提供基于silverlight的应用程序的应用程序信息.

这是您需要使用的代码,实际上这是您可以在另一个线程的UI线程上运行一段代码的方式(无论该线程运行的方式和位置).


Mat*_*cey 5

或者,如果您正在使用MVVM,则可以从UI线程更新viewmodel,让INotifyPropertyChanged的魔力为您更新UI.