Я использую поток BackgroundWorker для выполнения какой-либо работы вне потока GUI в Silverlight 4. Я хотел бы обновить виджеты в контексте GUI из фонового потока, но прочитал предупреждения об этом из документации Microsoft. Я понимаю, что при обмене данными из одного потока в другой возникает исключение, поскольку только поток графического интерфейса может обновлять виджеты, но для этого не предусмотрен BeginInvoke:
// BackgroundWorker thread code...
Widget.Dispatcher.BeginInvoke(() => Status.Text = "Hello");
Однако я получаю некоторые непредсказуемые результаты в моем рабочем коде.
Как правильно связываться с потоком GUI? Это происходит путем передачи коллекции результатов из метода RunWorkerCompleted?
Спасибо
Scott