J'ai cherché sur google ne pas obtenir ce que je veux. Je ne sais pas si j'ai raison ou tort. regard, j'ai essayer de comprendre GC.Collect() est donc ici le code ..Garbage Collection malentendu dans C#
public class SomePublisher
{
public event EventHandler SomeEvent;
}
public class SomeSubscriber
{
public static int Count;
public SomeSubscriber(SomePublisher publisher)
{
publisher.SomeEvent += new EventHandler(publisher_SomeEvent);
}
~SomeSubscriber()
{
SomeSubscriber.Count++;
}
private void publisher_SomeEvent(object sender, EventArgs e)
{
// TODO: something
}
}
je fais dans mon fil conducteur ..
SomePublisher publisher = new SomePublisher();
for (int i = 0; i < 10; i++)
{
SomeSubscriber subscriber = new SomeSubscriber(publisher);
subscriber = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
Console.WriteLine(SomeSubscriber.Count.ToString());
Console.ReadLine();
Je reçois la sortie 0 mais devrait être bebe 10 selon moi parce que GC.Collect() doit avoir supprimer les objets class1 de la mémoire de sorte que class1 destructor doit être appelé donc le nombre doit être augmenté à 10..can n'importe quel corps expliquent cela ..
La principale chose à comprendre à propos de 'GC.Collect();' est que vous ne devriez pas l'utiliser. –
Le testez-vous en mode débogage? –