コード例 #1
0
ファイル: Program.cs プロジェクト: MaxGaranin/WpfSamples
        private static void Test2()
        {
            var shortLived = new ShortLivedEventHandler();
            var firstWeakReference = new WeakReference(shortLived, false);

            shortLived.SubscribeWeakly();
            LongLivedEventProvider.Instance.RaiseEvent();

            GC.Collect();
            // Теперь свойство IsAlive вернет false!
            Console.WriteLine("А жив ли обджект? " + firstWeakReference.IsAlive);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: MaxGaranin/WpfSamples
        private static void Test1()
        {
            var shortLived = new ShortLivedEventHandler();
            // Подписываемся на событие обычным образом!
            shortLived.Subscribe();
            // Создаем слабую ссылку, чтобы отслеживать время жизни короткоживущего объекта
            var firstWeakReference = new WeakReference(shortLived, false);

            Console.WriteLine("Зажигаем событие");
            LongLivedEventProvider.Instance.RaiseEvent();

            Console.WriteLine("А жив ли обджект? " + firstWeakReference.IsAlive);

            Console.WriteLine("Собираем мусор");
            GC.Collect();

            Console.WriteLine("А жив ли обджек? " + firstWeakReference.IsAlive);
        }