从后台线程通知UI线程

14

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

我需要在某种后台线程上执行此操作(可以使用BackgroundWorker或ThreadPool,由于我可以排队处理任务的方式,ThreadPool更受欢迎),但是当任务完成时,我还需要更新UI。

如何在Windows Phone上通知UI线程任务已完成?

我曾看到有人使用了Dispatcher.beginInvoke,但不清楚他使用的是Worker还是Pool--这是正确的做法吗?

2个回答

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

Dispatcher 允许你在线程上运行代码。

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

以下是你需要使用的代码,实际上这是一种可以从另一个线程(无论该线程在何处和如何运行)运行 UI 线程上的代码的方法。


5

如果您正在使用MVVM,您可以在UI线程之外更新viewmodel,并让INotifyPropertyChanged的神奇功能为您处理UI更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接