BackgroundWorker завершил событие - какой поток? - PullRequest
4 голосов
/ 22 марта 2009

Возвращается ли завершенное событие элемента управления BackgroundWorker в потоке графического интерфейса или мне нужно упорядочить это обратно.

Кроме того, происходит ли событие прогресса в потоке графического интерфейса или мне нужно его маршалировать?

Ответы [ 4 ]

5 голосов
/ 22 марта 2009

Оба события будут перенаправлены в поток пользовательского интерфейса.

3 голосов
/ 22 марта 2009

Он будет вызван в потоке пользовательского интерфейса, который инициировал операцию. Под капотом BackgroundWorker использует SynchronizationContext для маршалинга между двумя потоками. И WPF, и WinForms установят соответствующий SynchronizationContext при запуске.

3 голосов
/ 22 марта 2009

Все события будут возвращаться в потоке, который создал экземпляр BackgroundWorker. Все, что должен сделать ваш клиент, это прослушать событие.

Вы, наверное, были здесь, но смотрите также: События BackgroundWorker

2 голосов
/ 05 января 2012

Если BackgroundWorker был создан из потока пользовательского интерфейса, то оба события также будут вызываться в потоке пользовательского интерфейса.

Если он был создан из фонового потока, событие будет вызвано в неопределенном фоновом потоке.

См. Этот пост и эту проблему подключения для получения дополнительной информации.

https://stackoverflow.com/a/2806824/279999

http://connect.microsoft.com/VisualStudio/feedback/details/116930/backgroundworker-components-progresschanged-and-runworkercompleted-event-run-on-wrong-thread

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