Уведомить пользовательский интерфейс из фоновой темы - PullRequest
14 голосов
/ 19 июля 2011

Я пытаюсь загрузить несколько страниц в фоновом режиме, чье содержимое будет вставлено в базу данных.

Мне нужно сделать это в каком-то фоновом потоке (либо в BackgroundWorker, либо в ThreadPool, что предпочтительнее из-за того, как я могу поставить вещи в очередь), но мне также нужно обновить пользовательский интерфейс после выполнения заданий.

Как я могу уведомить поток пользовательского интерфейса о том, что задания завершены на Windows Phone?

Я видел, как кто-то использовал Dispatcher.beginInvoke, но не было ясно, что он использовал (рабочий или пул) - это правильный способ сделать это?

Ответы [ 2 ]

22 голосов
/ 19 июля 2011
 Deployment.Current.Dispatcher.BeginInvoke(() =>
 {
      // change UI here
 });

Диспетчер позволяет запускать фрагмент кода в потоке.

Класс развертывания предоставляет информацию о приложении на основе silverlight.

это код, который вам нужно использовать, фактически это способ, которым вы можете запустить фрагмент кода в потоке пользовательского интерфейса из другого потока (независимо от того, как и где этот поток выполняется).

5 голосов
/ 19 июля 2011

В качестве альтернативы, если вы используете MVVM, вы можете обновить модель представления из потока пользовательского интерфейса и позволить магии INotifyPropertyChanged обрабатывать обновление пользовательского интерфейса для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...