Почему поток пользовательского интерфейса блокируется при запуске чего-либо в другом потоке? - PullRequest
1 голос
/ 02 апреля 2009

Предположим, у меня нормальное button.Click событие.

Если я попытаюсь получить доступ к элементам пользовательского интерфейса из этого события, я потенциально могу получить нежелательное поведение - или даже исключение (при отладке). Обычное исключение в таком сценарии: ...cannot access UI elements from thread different than they were created in.

Поскольку это другой поток (отличный от основного), почему мой пользовательский интерфейс блокируется, когда я выполняю трудоемкие операции в событии?

1 Ответ

3 голосов
/ 02 апреля 2009

Что здесь за рамки? Winform? WPF?

В winform (для события щелчка) вы являетесь в потоке пользовательского интерфейса. Таким образом, вы можете просто поговорить с пользовательским интерфейсом из события щелчка. Если что-то еще происходит, значит, что-то не так. Вы уверены, что не используете обратный вызов по таймеру?

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

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