コード例 #1
0
        public void Test()
        {
            // Collection with 1 item to make this test simple
            Items = new ContinuousCollection <NotifiableItem>
            {
                new NotifiableItem {
                    TestValue1 = 3, TestValue2 = 10
                },
            };

            // Start with TestValue1
            MaxValueCV = Items.ContinuousMax(item => item.TestValue1, value => Max = value);
            Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue);
            Console.WriteLine("Max = " + Max);
            Console.WriteLine();

            // Switch to TestValue2
            MaxValueCV = Items.ContinuousMax(item => item.TestValue2, value => Max = value);
            Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue);
            Console.WriteLine("Max = " + Max);
            Console.WriteLine();
            GC.Collect();
            WeakPropertyChangedEventManager.RemoveCollectedEntries();
            GC.Collect();
            // Now set TestValue1
            Items[0].TestValue1 = 20;
            Console.WriteLine("(BUG)");
            Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue);
            // BUG: Max is set to 20 when it should be 10
            Console.WriteLine("Max = " + Max);

            Assert.AreEqual(10, Max);

            Console.Write("Hit enter to continue...");
            Console.ReadLine();
        }
コード例 #2
0
        public void CleanupReferences()
        {
            RegisterOnPersonName();
            WeakReference personRef = new WeakReference(_person);

            _person = null;

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            Assert.IsFalse(personRef.IsAlive);

            WeakPropertyChangedEventManager.RemoveCollectedEntries();
            for (int i = 0; i < 10; i++)
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                WeakPropertyChangedEventManager.RemoveCollectedEntries();
            }

            Assert.AreEqual(0, WeakPropertyChangedEventManager.SourceToBridgeTable.Count);
        }