Pourquoi mon destructeur de ne jamais exécuter?

J'ai un vide Winform avec un destructeur de la méthode

public partial class Form1 : Form
{
    public Form1()
    {
        System.Diagnostics.Trace.WriteLine("Form1.Initialize " + this.GetHashCode().ToString());
        InitializeComponent();
    }
    ~Form1()
    {
        System.Diagnostics.Trace.WriteLine("Form1.Dispose " + this.GetHashCode().ToString());
    }
}

Lorsque le formulaire est détruit, je veux écrire dans la fenêtre de sortie:

(Form1 ouvert) 
Form1.Initialiser 41149443 
(Form1 fermé) 
Form1.Disposer 41149443 

MSDN suggère 3 façons dans la mise en œuvre destructeur:

Cependant, aucune de ces façons d'écrire "Form1.Disposer 41149443" de la Fenêtre de sortie.
Par conséquent, je ne suis pas capable de dire si le formulaire a été détruit ou pas. Des Suggestions ?

Dois-je renoncer à l'espoir sur la réalisation de ce en raison de l'incertitude de garbage collector?

Est-il un autre moyen de savoir si Form1 a été nettoyée ?

Pourquoi? Qu'essayez-vous de faire?
Vous ne pouvez pas supposer que le destructeur sera appelé. (Par exemple, si vous avez assez de mémoire, il est parfaitement valable de ne jamais appeler n'importe quel destructeur, jamais.)
N'est-ce pas la trace écrite?
Suivi de sortie n'a pas "Form1.Disposer 41149443" écrit
Ne vous rincer la sortie de trace avant que l'application est terminée? Sinon, votre trace pourrait être nettoyée avant de l'écrire.

OriginalL'auteur Jeson Martajaya | 2011-08-03