Je pensais que le GC appellerait Dispose éventuellement si votre programme ne le faisait pas mais que vous devriez appeler Dispose() dans votre programme juste pour rendre le nettoyage déterministe.Le garbage collector appelle-t-il Dispose()?
Cependant, de mon petit programme de test, je ne vois pas se disposer appelé du tout ....
public class Test : IDisposable
{
static void Main(string[] args)
{
Test s = new Test();
s = null;
GC.Collect();
Console.ReadLine();
}
public Test()
{
Console.WriteLine("Constructor");
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
// La sortie est juste « Constructor », je ne suis pas « Jeter » comme je m'attendrais. Quoi de neuf? Oui, je sais que je devrais appeler Dispose() - Je suis le modèle standard lorsque j'utilise des objets jetables. Ma question se pose car j'essaie de traquer une fuite dans le code de quelqu'un d'autre, qui est géré en C++ (une autre couche de complexité qui serait le bon sujet d'un autre thread).
Cette question est un doublon de [http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-idisposable-dispose-for -me] (http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-idisposable-dispose-for-me). –