static void Main() { Observable subject = new Observable(); Observer watcher = new Observer(); Console.WriteLine("subscribe new WeakEventHandler()\n"); subject.OnChange += new WeakEventHandler(watcher.OnChange); subject.Change(); Console.WriteLine("\nObserver = null, GC"); watcher = null; GC.Collect(0, GCCollectionMode.Forced); GC.WaitForPendingFinalizers(); subject.Change(); if (Debugger.IsAttached) { Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } }