public void EventHandlerShouldBeWeak()
        {
            bool eventReceived = false;
              var listener = new ListenerWithEventArgs();
              WeakEventHandler<EventArgs>.Register(
            this,
            listener,
            (s, h) => s.Event += h,
            (s, h) => s.Event -= h,
            (l, s, e) => { l.OnEvent(s, e); eventReceived = true; });

              RaiseEvent();
              Assert.IsTrue(listener.EventReceived);
              Assert.IsTrue(eventReceived);

              listener.Reset();
              eventReceived = false;
              listener = null;
              GC.Collect();

              RaiseEvent();
              Assert.IsFalse(eventReceived);
        }
        public void EventHandlerShouldBeWeak()
        {
            bool eventReceived = false;
            var  listener      = new ListenerWithEventArgs();

            WeakEventHandler <EventArgs> .Register(
                this,
                listener,
                (s, h) => s.Event += h,
                (s, h) => s.Event -= h,
                (l, s, e) => { l.OnEvent(s, e); eventReceived = true; });

            RaiseEvent();
            Assert.IsTrue(listener.EventReceived);
            Assert.IsTrue(eventReceived);

            listener.Reset();
            eventReceived = false;
            listener      = null;
            GC.Collect();

            RaiseEvent();
            Assert.IsFalse(eventReceived);
        }