WPF: как обрабатывать ошибки с помощью BackgroundWorker - PullRequest
2 голосов
/ 10 февраля 2009

Я немного новичок, когда дело доходит до программирования Windows-клиента. У меня есть фоновый работник, у которого есть событие DoWork и событие RunCompleted. Если в DoWork генерируется исключение, я хочу внести изменения в свой пользовательский интерфейс, однако не могу, потому что он находится в другом потоке. Я могу сообщить об ошибке RunCompleted, но это мне тоже не поможет.

1 Ответ

4 голосов
/ 10 февраля 2009

вызов Dispatcher.BeginInvoke. По сути, вы хотите код, подобный этому:

void UpdateState(WhatEverType someObject)
{
    if (! Dispatcher.CheckAccess())
    {
        Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(()=>UpdateState(someObject));
    }
    else
    {
        //make the UI changes here.
    }
}
...