Pour porter la réponse de Michael Damatov (C#) qui est basée sur Herfried K. Wagner. (VB.NET) voici la version C++/CLI :
ref class MyClass
{
ref class StaticFinalizer sealed
{
!StaticFinalizer();
};
static initonly StaticFinalizer^ stDestr = gcnew StaticFinalizer();
}
MyClass::StaticFinalizer::!StaticFinalizer()
{
System::Diagnostics::Debug::WriteLine("In StaticFinalizer!");
}
P.S. Tout comme la méthode AppDomain.ProcessExit, celle-ci ne peut pas être appelée si le processus se termine anormalement (depuis le Task Manager par exemple). Une autre mise en garde est que si MyClass est générique (templated), l'hypothèse selon laquelle son constructeur statique et son destructeur statique ne seront pas appelés plus d'une fois par exécution de l'application n'est plus valable.