public void TestGarbageCollectionForNamedMethodPrivate() { Messenger.Reset(); TestRecipientPrivate.Reset(); _recipientPrivate = new TestRecipientPrivate(WeakActionTestCase.PublicNamedMethod); _recipientReference = new WeakReference(_recipientPrivate); Assert.AreEqual(null, _recipientPrivate.Content); Assert.IsTrue(_recipientReference.IsAlive); const string message = "Hello world"; Messenger.Default.Send(message); Assert.AreEqual(message, _recipientPrivate.Content); _recipientPrivate = null; GC.Collect(); #if SILVERLIGHT // Cannot GC the internal method reference in Silverlight Assert.IsTrue(_recipientReference.IsAlive); _recipientPrivate = (TestRecipientPrivate)_recipientReference.Target; Messenger.Default.Unregister(_recipientPrivate); _recipientPrivate = null; GC.Collect(); Assert.IsFalse(_recipientReference.IsAlive); #else Assert.IsFalse(_recipientReference.IsAlive); #endif }
public void TestGarbageCollectionForAnonymousStaticMethodPrivate() { Messenger.Reset(); TestRecipientPrivate.Reset(); _recipientPrivate = new TestRecipientPrivate(WeakActionTestCase.AnonymousStaticMethod); _recipientReference = new WeakReference(_recipientPrivate); Assert.AreEqual(null, TestRecipientPrivate.ContentStatic); Assert.IsTrue(_recipientReference.IsAlive); const string message = "Hello world"; Messenger.Default.Send(message); Assert.AreEqual(message, TestRecipientPrivate.ContentStatic); _recipientPrivate = null; GC.Collect(); Assert.IsFalse(_recipientReference.IsAlive); }