На педантичном уровне способ «предотвращения» Application.ProcessMessages состоит в том, чтобы не вызывать код, который
- показывает модальное диалоговое окно
- вызывает SendMessage
- запускает свой собственный локальный цикл сообщений
- вызывает Application.ProcessMessages (который является локальным циклом сообщений)
Если вы напишите цикл, который не выполняет ничего, кроме численных расчетов и файлового ввода-вывода, ваш пользовательский интерфейс будет заморожен до тех пор, пока вы не выйдете из цикла, поскольку сообщения не обрабатываются.
Если вы хотите, чтобы ваш пользовательский интерфейс реагировал на некоторые длительные операции с неизвестным произвольным кодом (сторонней библиотекой), но вы не хотите, чтобы в приложении в это время происходили определенные виды действий, это другая проблема - это о предотвращении повторного входа. Вы хотите запретить использование некоторых частей вашего кода во время выполнения определенного действия. Например, модальные диалоги не позволяют вам взаимодействовать с окнами приложения под диалогом, отключая все окна верхнего уровня приложения, кроме самого модального диалога.