http://lukepuplett.blogspot.com/2009/05/updating-ui-from-asynchronous-ops.html

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

Я использую шаблон MVVM, так что моя ViewModel практически ничего не знает о представлении, которое представляет модель пользователю.

Скажем, у меня есть следующий метод в моей ViewModel:

public void backgroundWorker_ReportProgress(object sender, ReportProgressArgs e)
{
    this.Messages.Add(e.Message);
    OnPropertyChanged("Messages");
}

На мой взгляд, ListBox привязан к свойству Messages (List<string>) из ViewModel.OnPropertyChanged выполняет рольINotifyPropertyChanged интерфейс, вызвавPropertyChangedEventHandler.

Мне нужно убедиться, чтоOnPropertyChanged вызывается в потоке пользовательского интерфейса - как мне это сделать? Я пробовал следующее:

public Dispatcher Dispatcher { get; set; }
public MyViewModel()
{ 
    this.Dispatcher = Dispatcher.CurrentDispatcher;
}

Затем добавив следующее кOnPropertyChanged метод:

if (this.Dispatcher != Dispatcher.CurrentDispatcher)
{
    this.Dispatcher.Invoke(DispatcherPriority.Normal, new ThreadStart(delegate
    {
        OnPropertyChanged(propertyName);
    }));
    return;
}

но это не сработало. Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос