Форма получает сборщик мусора, когда нет ссылок, и сборщик мусора запускается. Вы можете принудительно запустить сборщик мусора, вызвав GC.Collect ().
Вы не должны ссылаться на любой другой объект в Finalizer (он же деструктор), потому что объект, возможно, уже был собран мусором.
Вы можете использовать инструменты анализатора памяти, чтобы выяснить, является ли ваш объект сборщиком мусора или нет, если вам это действительно нужно.
Вы также должны иметь в виду, что финализатор вызывается из потока, отличного от основного потока.
EDIT:
Если ваша проблема заключается только в том, что вы не видите вывод трассировки, вам может потребоваться включить автозапуск на
<configuration>
<system.diagnostics>
<trace autoflush="true" />
</system.diagnostics>
</configuration>
РЕДАКТИРОВАТЬ 2:
Там может быть внешняя ссылка на вашу форму, например, зарегистрированный обработчик событий. Я бы посоветовал вам добавить кнопку в области администрирования вашего приложения, которая выполняет следующий код:
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
Таким образом, сборщик мусора должен работать и должен уничтожить вашу форму (установите точку останова в финализаторе). Если нет, у вас есть ссылка на объект, который должен быть уничтожен.