У меня есть макет приложения, основанный на дереве слева и панели справа. На панели размещается другой класс TForm в зависимости от выбранного узла дерева (своего рода «проводник форм»). Одновременно отображается только одна форма, которая предоставляет базовые данные, хранящиеся в другом месте, и экземпляр формы создается и уничтожается при каждом щелчке нового узла дерева.
Все это работает нормально, за исключением следующего сценария. Нажмите кнопку в форме, которая запускает действие, которое занимает секунду или около того. Во время этого действия может быть вызов Application.ProcessMessages. Теперь, непосредственно перед тем, как это действие действительно завершится, Пользователь щелкает новый узел дерева. Это сообщение wmMousedown обрабатывается, вызывая немедленное освобождение формы. Затем код действия возвращается к коду формы, чтобы обнаружить, что self изменился, и вызывает AV.
Мой вопрос: есть ли способ узнать, что все сообщения формы были обработаны и завершены, прежде чем я позволю освободить форму? Модальные формы, кажется, делают это, когда нажимается кнопка закрытия, потому что они приостанавливаются перед закрытием, если заняты...
Спасибо Брайан