Esempio n. 1
0
        static void PerformanceTest()
        {
            SpeedTest(
                "Normal (strong) event",
                5000000,
                callCount => {
                Program p = new Program();
                NormalEventSource source = new NormalEventSource();
                source.Event            += StaticOnEvent;
                source.Event            += p.OnEvent;
                for (int i = 0; i < callCount; i++)
                {
                    source.RaiseEvent();
                }
                GC.KeepAlive(p);
            });

            SpeedTest(
                "Smart weak event",
                200000,
                callCount => {
                Program p = new Program();
                SmartEventSource source = new SmartEventSource();
                source.Event           += StaticOnEvent;
                source.Event           += p.OnEvent;
                for (int i = 0; i < callCount; i++)
                {
                    source.RaiseEvent();
                }
                GC.KeepAlive(p);
            });

            SpeedTest(
                "Fast smart weak event",
                5000000,
                callCount => {
                Program p = new Program();
                FastSmartEventSource source = new FastSmartEventSource();
                source.Event += StaticOnEvent;
                source.Event += p.OnEvent;
                for (int i = 0; i < callCount; i++)
                {
                    source.RaiseEvent();
                }
                GC.KeepAlive(p);
            });
        }
Esempio n. 2
0
        public void Cleanup()
        {
            normalSource.Event -= StaticOnEvent;
            normalSource.Event -= OnEvent;
            normalSource        = null;

            smartSource.Event -= StaticOnEvent;
            smartSource.Event -= OnEvent;
            smartSource        = null;

            fastSmartSource.Event -= StaticOnEvent;
            fastSmartSource.Event -= OnEvent;
            fastSmartSource        = null;

            fastSmartSource2013.Event -= StaticOnEvent;
            fastSmartSource2013.Event -= OnEvent;
            fastSmartSource2013        = null;

            thomasSource.Unsubscribe(StaticOnEvent);
            thomasSource.Unsubscribe(OnEvent);
            thomasSource = null;
        }
Esempio n. 3
0
        public void Setup()
        {
            normalSource        = new NormalEventSource();
            normalSource.Event += StaticOnEvent;
            normalSource.Event += OnEvent;

            smartSource        = new SmartEventSource();
            smartSource.Event += StaticOnEvent;
            smartSource.Event += OnEvent;

            fastSmartSource        = new FastSmartEventSource();
            fastSmartSource.Event += StaticOnEvent;
            fastSmartSource.Event += OnEvent;

            fastSmartSource2013        = new FastSmartEventSource2013();
            fastSmartSource2013.Event += StaticOnEvent;
            fastSmartSource2013.Event += OnEvent;

            thomasSource = new WeakEvent.WeakEventSource <EventArgs>();
            thomasSource.Subscribe(StaticOnEvent);
            thomasSource.Subscribe(OnEvent);
        }