コード例 #1
0
        public void LifeTimeEventListenerDontHoldGarbage()
        {
            var        slot = new EventSlot();
            List <int> list = new List <int>();

            {
                TestGarbage garbage  = new TestGarbage(list);
                var         listener = DelegateEventListeners.LifeTime((t) => t.Callback(), garbage);
                slot.Register(listener);
            }

            GC.Collect();

            slot.Trigger();

            Assert.AreEqual(0, list.Count);
        }
コード例 #2
0
        public void LifeTimeEventListenerStillAlive()
        {
            var        slot = new EventSlot();
            List <int> list = new List <int>();


            TestGarbage garbage = new TestGarbage(list);

            var listener = DelegateEventListeners.LifeTime((t) => t.Callback(), garbage);

            slot.Register(listener);


            GC.Collect();

            slot.Trigger();
            garbage.Nothing = 2;
            Assert.AreEqual(1, list.Count);
        }