Вызов Application.ProcessMessages
обычно считается запахом кода. Пусть ваш главный поток простаивает, если ему нечего делать.
Если вы управляете компанией и нуждаетесь в том, чтобы один из ваших работников побежал в магазин и забрал некоторые столь необходимые материалы, вы бы шагали к двери, пока он не вернулся, или предпочли бы сидеть в офисе и отдыхать и подожди его, и узнаешь, что припасы здесь, потому что ты слышишь, как он входит в дверь? В любом случае, он потратит столько же времени, но первым делом вымотает твои ноги.
Аналогично, вместо того, чтобы ваш пользовательский интерфейс следил за потоком, отправьте отчет о потоке обратно в пользовательский интерфейс. Один из способов сделать это - заставить поток использовать PostMessage
для отправки настраиваемого сообщения в форму, запустившую его после завершения, и поместить обработчик сообщения в форму для ответа на него.