Exemplo n.º 1
0
    static void Main()
    {
        DataSource source1     = new DataSource("Source 1"),
                   source2     = new DataSource("Source 2");
        DataListener listener1 = new DataListener("Listener 1"),
                     listener2 = new DataListener("Listener 2");

        listener1.Subscribe(source1);
        listener2.Subscribe(source2);
        // now we'll release one source and one listener, and force a collect
        source1   = null;
        listener2 = null;
        GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
        GC.WaitForPendingFinalizers();     // source 1 gets collected, ONLY
        Console.WriteLine("Done");
        Console.ReadLine();
        GC.KeepAlive(source2);     // prevents collection due to optimisation
        GC.KeepAlive(listener1);   // prevents collection due to optimisation
    }