我正在尝试在后台下载一些页面,其内容将被插入到数据库中。
我需要在某种后台线程上执行此操作(BackgroundWorker或ThreadPool,由于我可以排队的方式,这是首选),但我还需要在完成作业时更新UI。 / p>
如何通知UI线程在Windows Phone上完成作业?
我见过有人使用Dispatcher.beginInvoke,但不清楚他在使用什么(工作者或游泳池) - 这是正确的做法吗?
答案 0 :(得分:22)
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// change UI here
});
Dispatcher允许您在线程上运行一段代码。
Deployment类提供基于silverlight的应用程序的应用程序信息。
这是您需要使用的代码,实际上这是您可以在另一个线程的UI线程上运行一段代码的方式(无论该线程运行的方式和位置)。
答案 1 :(得分:5)
或者,如果您正在使用MVVM,则可以从UI线程更新viewmodel,让INotifyPropertyChanged的魔力为您更新UI。