Ejemplo n.º 1
0
        public void ShouldLetPublisherBeGarbageCollected()
        {
            var pub = new Publisher1();

            var pubReference = new WeakReference(pub);

            var receiver1 = new EventReceiver1();

            pub.MyTestEvent += receiver1.Callback;

            pub.Publish();

            Assert.That(receiver1.CallCounter, Is.EqualTo(1));

            pub = null;

            GC.Collect();

            Assert.That(pubReference.IsAlive, Is.False);
        }
Ejemplo n.º 2
0
 public void PerTestSetUp()
 {
     EventReceiver1 = new EventReceiver1();
     EventReceiver2 = new EventReceiver2();
     _myTestHandler = new WeakEvent<EventHandler<EventArgs1>>();
 }
Ejemplo n.º 3
0
        public void ShouldIgnoreGarbageCollectedSubscribers()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            var receiver = new EventReceiver1();
            var receiverReference = new WeakReference(receiver);

            var args = new EventArgs1(2);
            var sender = new object();

            handler.Add(receiver.Callback);

            handler.Raise(sender, args);

            receiver = null;

            GC.Collect();

            Assert.That(receiverReference.IsAlive, Is.False);

            handler.Raise(sender, args);

            Assert.That(handler.ListenersCount, Is.EqualTo(0));
        }