Да, но вы должны обновить элементы пользовательского интерфейса в потоке пользовательского интерфейса, используя Dispatcher.Invoke .
Пример в C #: вместо
myTextBox.Text = myText;
использование
Dispatcher.Invoke(new Action(() => myTextBox.Text = myText));
VB.NET (до версии 4) не поддерживает анонимные методы, поэтому вам придется обойти его анонимной функцией:
Dispatcher.Invoke(Function() UpdateMyTextBox(myText))
...
Function UpdateMyTextBox(ByVal text As String) As Object
myTextBox.Text = text
Return Nothing
End Function
Кроме того, вы можете запустить фоновые потоки, используя класс BackgroundWorker , который поддерживает обновления в пользовательском интерфейсе с помощью событий ProgressChanged
и RunWorkerCompleted
: оба события генерируются в потоке пользовательского интерфейса автоматически. Пример использования BackgroundWorker можно найти здесь: SO вопрос 1754827 .