При закрытии приложения происходит событие в форме
Мое приложение порождает несколько независимых форм. Однажды при создании приложение о них забудет. Все действия обрабатываются в этой форме. Когда приложение закрывается, форма закрывается также, по RTS, я полагаю. Это хорошо, за исключением того, что ни OnClose, ни событие OnDestroy не запускаются, поэтому происходят утечки памяти. Я могу управлять, какие формы присутствуют (как я делаю сейчас), но на самом деле приложение должно полностью забыть об этих формах.
Есть ли способ обнаружить внутри формы, не являющейся основной формой приложения, что приложение находится в процессе закрытия?
1 ответ
OnDestroy
событие обязательно сработает, если форма будет уничтожена. Он вызывается из кода уничтожения формы. Таким образом, единственный вывод состоит в том, что ваша форма не разрушается и поэтому протекает.
Есть несколько очевидных способов убедиться, что ваши независимые формы не просочились:
- Когда вы создаете, передайте либо
Application
или жеMainForm
в качестве параметра владельца формы. Когда владелец уничтожен, он также уничтожит все, что у него есть, включая ваши формы. - Явно уничтожьте эти формы, например, из деструктора основной формы или из файла.dpr после вызова
Application.Run
возвращается.
Вариант 1 является наиболее часто используемым подходом.