Многие типы неуправляемых ресурсов могут выполнять свои обязанности по очистке, используя простой вызов API для дескриптора.Такие ресурсы могут (и часто должны) быть инкапсулированы в SafeHandle.Некоторые другие типы неуправляемых ресурсов (например, подписки на события, поддерживаемые долгоживущими издателями) несут обязанности по очистке, которые не могут быть хорошо обработаны с помощью финализатора.Финализаторы могут быть бесполезны, если семантически бесполезные сильные ссылки поддерживают оставленные объекты живыми, и могут быть непригодны для использования с ресурсами, которые должны быть очищены потоком, который их создает.Нет необходимости писать собственный финализатор для таких ресурсов, потому что ни один тип финализатора не устранит абсолютную 100% необходимость обеспечения их детерминированной утилизации.
Однако некоторые типы ресурсов могут выиграть от наличияфинализатор, даже если они должны делать вещи, которые не разрешены в пределах области ограниченного выполнения.Финализаторы могут быть полезны в ситуациях, когда фоновый поток отвечает за манипулирование объектом и когда основное приложение содержит объект, который, в свою очередь, содержит ссылку на реальный объект.Финализатор на объекте, удерживающем ссылку основного приложения, может сигнализировать фоновому потоку, что объект, который он поддерживает, больше не нужен.Такая сигнализация должна быть сделана осторожно, чтобы гарантировать, что она не нарушит поток финализатора, но если она сделана с осторожностью, может быть полезно иметь ее в финализаторе, даже если она не будет разрешена в CER.