При закрытии приложения происходит событие в форме - PullRequest
4 голосов
/ 25 января 2012

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

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

1 Ответ

6 голосов
/ 25 января 2012

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

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

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

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

...