У меня длительный процесс, который я не могу запустить асинхронно, поэтому, как и в случае с Explorer, когда вы копируете файлы, у меня есть диалоговое окно прогресса. Я показываю диалог модально, затем выполняю операции (мы будем называть его копированием файлов, чтобы сохранить его абстрактным), обновляю диалог прогресса и добавляю сообщения с помощью Application.DoEvents (), чтобы сохранить основной фрейм приложения и отреагировать.
Поскольку диалоговое окно является модальным, пользователь не может ничего делать, кроме просмотра или отмены. Другими словами, они не могут выбирать пункт меню или нажимать какие-либо кнопки.
Я всегда считал, что Application.DoEvents чрезвычайно злой, потому что вы можете повторно ввести код, который вы не намеревались повторно вводить. Но в этом случае, поскольку диалог прогресса является модальным, я не вижу причины, по которой это плохое или опасное решение.
Я что-то пропускаю или выкачиваю сообщения с помощью Application.DoEventing, что законно делать с модальным диалогом вверх?