从后台线程通知UI线程

时间:2011-07-19 15:52:00

标签: c# multithreading silverlight windows-phone-7

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

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

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

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

2 个答案:

答案 0 :(得分:22)

 Deployment.Current.Dispatcher.BeginInvoke(() =>
 {
      // change UI here
 });

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

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

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

答案 1 :(得分:5)

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