Пример #1
0
        public void TestWithLocalVariableInAnonymousMethod()
        {
            var counter = new InstanceCounter();

            var evSrc   = new EventSource();
            var evSink1 = new EventSink2(counter, evSrc);
            var evSink2 = new EventSink2(counter, evSrc);
            var evSink3 = new EventSink2(counter, evSrc);
            var evSink4 = new EventSink2(counter, evSrc);
            var evSink5 = new EventSink2(counter, evSrc);

            Assert.AreEqual(5, counter.Instances);

            evSink1.CreateLinkToSourceGoodStyle();
            evSink2.CreateLinkToSourceGoodStyle();
            evSink3.CreateLinkToSourceGoodStyle();
            evSink4.CreateLinkToSourceGoodStyle();
            evSink5.CreateLinkToSourceGoodStyle();

            evSink1 = null;
            evSink2 = null;
            evSink3 = null;
            evSink4 = null;
            evSink5 = null;

            GC.Collect();
            System.Threading.Thread.Sleep(500);
            GC.Collect();

            Assert.AreEqual(0, counter.Instances); // all instances should be claimed because we used a local variable to create the anonymous methode
        }
Пример #2
0
        public void TestWithInstanceVariableInAnonymousMethod()
        {
            var counter = new InstanceCounter();

            var evSrc   = new EventSource();
            var evSink1 = new EventSink2(counter, evSrc);
            var evSink2 = new EventSink2(counter, evSrc);
            var evSink3 = new EventSink2(counter, evSrc);
            var evSink4 = new EventSink2(counter, evSrc);
            var evSink5 = new EventSink2(counter, evSrc);

            Assert.AreEqual(5, counter.Instances);

            evSink1.CreateLinkToSourceBadStyle();
            evSink2.CreateLinkToSourceBadStyle();
            evSink3.CreateLinkToSourceBadStyle();
            evSink4.CreateLinkToSourceBadStyle();
            evSink5.CreateLinkToSourceBadStyle();

            evSink1 = null;
            evSink2 = null;
            evSink3 = null;
            evSink4 = null;
            evSink5 = null;

            GC.Collect();
            System.Threading.Thread.Sleep(500);
            GC.Collect();

            Assert.AreEqual(5, counter.Instances); // the 5 instances could not be claimed because we used the instance member in CreateLinkToSource1,
        }
Пример #3
0
		public void TestWithLocalVariableInAnonymousMethod()
		{
			var counter = new InstanceCounter();

			var evSrc = new EventSource();
			var evSink1 = new EventSink2(counter, evSrc);
			var evSink2 = new EventSink2(counter, evSrc);
			var evSink3 = new EventSink2(counter, evSrc);
			var evSink4 = new EventSink2(counter, evSrc);
			var evSink5 = new EventSink2(counter, evSrc);

			Assert.AreEqual(5, counter.Instances);

			evSink1.CreateLinkToSourceGoodStyle();
			evSink2.CreateLinkToSourceGoodStyle();
			evSink3.CreateLinkToSourceGoodStyle();
			evSink4.CreateLinkToSourceGoodStyle();
			evSink5.CreateLinkToSourceGoodStyle();

			evSink1 = null;
			evSink2 = null;
			evSink3 = null;
			evSink4 = null;
			evSink5 = null;

			GC.Collect();
			System.Threading.Thread.Sleep(500);
			GC.Collect();

			Assert.AreEqual(0, counter.Instances); // all instances should be claimed because we used a local variable to create the anonymous methode
		}
Пример #4
0
		public void TestWithInstanceVariableInAnonymousMethod()
		{
			var counter = new InstanceCounter();

			var evSrc = new EventSource();
			var evSink1 = new EventSink2(counter, evSrc);
			var evSink2 = new EventSink2(counter, evSrc);
			var evSink3 = new EventSink2(counter, evSrc);
			var evSink4 = new EventSink2(counter, evSrc);
			var evSink5 = new EventSink2(counter, evSrc);

			Assert.AreEqual(5, counter.Instances);

			evSink1.CreateLinkToSourceBadStyle();
			evSink2.CreateLinkToSourceBadStyle();
			evSink3.CreateLinkToSourceBadStyle();
			evSink4.CreateLinkToSourceBadStyle();
			evSink5.CreateLinkToSourceBadStyle();

			evSink1 = null;
			evSink2 = null;
			evSink3 = null;
			evSink4 = null;
			evSink5 = null;

			GC.Collect();
			System.Threading.Thread.Sleep(500);
			GC.Collect();

			Assert.AreEqual(5, counter.Instances); // the 5 instances could not be claimed because we used the instance member in CreateLinkToSource1,
		}