(.net) CriticalFinalizerObject - Что это действительно делает?

Это было тривиально.

Каждый модуль имеет __file__ переменная, которая показывает ее относительный путь от того, где Вы прямо сейчас.

Поэтому то, чтобы заставлять каталог для модуля уведомить его просто как:

os.path.dirname(__file__)
6
задан devoured elysium 21 July 2009 в 03:06
поделиться

3 ответа

из нескольких выполненных мною тестов, это не похоже на правду.

Финализаторы в .Net - это недетерминированный. Это означает, что нет никакой гарантии , когда финализатор будет вызван. Тот факт, что объект вышел за пределы области видимости или даже был удален, не означает, что финализатор будет вызван сразу. Сборщик мусора обратится к этому в неизвестное время в будущем.

2
ответ дан 9 December 2019 в 20:47
поделиться

Если вам действительно нужен код для запуска, когда ваша программа Ctrl + Alt + Del'd, я не думаю, что есть другой способ, кроме как иметь отдельный программа, которая следит за состоянием первого. Если вам действительно нужна такая большая архитектура, я думаю, вы захотите использовать службу и некоторые клиентские приложения, или пару, или службы.

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

EDIT Лучше, чем этот обзор, вероятно, является событие ApplicationExit .

2
ответ дан 9 December 2019 в 20:47
поделиться