Уведомлять о потоке пользовательского интерфейса из фонового потока
Я пытаюсь загрузить несколько страниц в фоновом режиме, содержимое которых будет вставлено в базу данных.
Мне нужно сделать это в фоновом потоке какого-либо типа (либо BackgroundWorker, либо ThreadPool, что является предпочтительным из-за того, что я могу поставить очередь в очередь), но мне также нужно обновить интерфейс, когда выполняются задания.
Как я могу уведомить поток пользовательского интерфейса о том, что задания завершены на Windows Phone?
Я видел, как кто-то использовал Dispatcher.beginInvoke, но было непонятно, что он использовал (рабочий или пул) - это правильный способ сделать это?
Ответы
Ответ 1
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// change UI here
});
Dispatcher позволяет запускать кусок кода в потоке.
Deployment класс предоставляет информацию о приложении приложения на основе Silverlight.
это код, который вам нужно использовать, на самом деле так вы можете запускать кусок кода в потоке пользовательского интерфейса из другого потока (независимо от того, как и где работает этот поток).
Ответ 2
В качестве альтернативы, если вы используете MVVM, вы можете обновить viewmodel от потока пользовательского интерфейса и позволить магии обработчика INotifyPropertyChanged обновлять пользовательский интерфейс для вас.