Создание экземпляра формы в BackgroundWorker - PullRequest
0 голосов
/ 08 октября 2010

Я хочу создать новый экземпляр формы в BackgroundWorker. Я заметил, что когда я это делаю, вновь запущенная форма зависает.

Frozen form

Почему эта форма зависает? Как я могу обойти это?

Ответы [ 2 ]

3 голосов
/ 08 октября 2010

Замерзает, потому что вы создаете форму не в том потоке - в фоновом потоке нет цикла обработки событий.

Вам следует только создавать или касаться элементов интерфейса в потоке интерфейса.BackgroundWorker предоставляет для этого несколько хуков, или вы можете использовать Control.Invoke / BeginInvoke.

0 голосов
/ 08 октября 2010

Когда форма «запускается», ей нужен поток, который запускает WndProc и обрабатывает входящие сообщения из Windows. Вам следует подумать о том, чтобы использовать Application.Run() метод для запуска вашей формы. Это выполнит необходимую работу, чтобы убедиться, что WndProc работает должным образом, и я верю, что вы можете вызвать это из фонового потока, если это необходимо.

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