Запуск приложения winforms из отладчика отключает переключение alt-tab в форму

У меня есть приложение Winforms с основной формой, где многострочное текстовое поле обновляется во время длительного процесса.

Я хотел бы иметь возможность использовать средство ALT-TAB в Windows, чтобы переключиться с среды IDE Visual Studio 2012 и посмотреть, как обновляется форма во время работы приложения.

Есть ли какая-то опция, которая контролирует это? Если у меня запущены другие приложения, такие как "Блокнот", я могу отключиться от IDE, но навигация таким образом к запущенному приложению Winforms кажется отключенной.

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

Приложение winforms не является многопоточным.

Есть идеи?

1 ответ

Решение

Приложение winforms не является многопоточным.

Это означает, что вы выполняете всю свою длительную обработку в потоке пользовательского интерфейса. А это, в свою очередь, означает, что во время этой обработки ваше приложение игнорирует все сообщения, которые отправляет Windows, например, "эй, кто-то просто Alt+Tabbed вам, так что перенесите себя вперед".

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

Другие вопросы по тегам