При закрытии приложения происходит событие в форме

Мое приложение порождает несколько независимых форм. Однажды при создании приложение о них забудет. Все действия обрабатываются в этой форме. Когда приложение закрывается, форма закрывается также, по RTS, я полагаю. Это хорошо, за исключением того, что ни OnClose, ни событие OnDestroy не запускаются, поэтому происходят утечки памяти. Я могу управлять, какие формы присутствуют (как я делаю сейчас), но на самом деле приложение должно полностью забыть об этих формах.

Есть ли способ обнаружить внутри формы, не являющейся основной формой приложения, что приложение находится в процессе закрытия?

1 ответ

Решение

OnDestroy событие обязательно сработает, если форма будет уничтожена. Он вызывается из кода уничтожения формы. Таким образом, единственный вывод состоит в том, что ваша форма не разрушается и поэтому протекает.

Есть несколько очевидных способов убедиться, что ваши независимые формы не просочились:

  1. Когда вы создаете, передайте либо Application или же MainForm в качестве параметра владельца формы. Когда владелец уничтожен, он также уничтожит все, что у него есть, включая ваши формы.
  2. Явно уничтожьте эти формы, например, из деструктора основной формы или из файла.dpr после вызова Application.Run возвращается.

Вариант 1 является наиболее часто используемым подходом.

Другие вопросы по тегам