コード例 #1
0
ファイル: EventManager.cs プロジェクト: zer/Anchor
        /// <summary>
        /// Removes a weak event handler.
        /// </summary>
        /// <param name="eventHandler"></param>
        public void RemoveHandler(IListener <T> eventHandler)
        {
            if (eventHandler == null)
            {
                throw new ArgumentNullException(nameof(eventHandler), $"{nameof(eventHandler)} is null.");
            }

            m_Targets.Remove(eventHandler);
            m_Targets.CleanUp();

            if (m_Listening && m_Targets.Count == 0)
            {
                m_Listening = false;
                DetachFromEvent();
            }
        }
コード例 #2
0
        public void WeakReferenceCollection_Remove_Test2()
        {
            using (var verify = new Verify())
            {
                var result = new WeakReferenceCollection <Foo>();

                Action add = () => result.Add(new Foo());

                add();

                Memory.CycleGC();

                var f = new Foo();
                result.Add(f);
                result.Add(f);
                result.Remove(f);
                result.Remove(f);
                result.CleanUp();

                verify.IsEmpty(result, "");
            }
        }
コード例 #3
0
        public void WeakReferenceCollection_Remove_Test2()
        {
            using (var verify = new Verify())
            {
                var result = new WeakReferenceCollection <Foo>();

#pragma warning disable IDE0039 // Use local function
                Action add = () => result.Add(new Foo());
#pragma warning restore IDE0039 // Use local function

                add();

                Memory.CycleGC();

                var f = new Foo();
                result.Add(f);
                result.Add(f);
                result.Remove(f);
                result.Remove(f);
                result.CleanUp();

                verify.IsEmpty(result, "");
            }
        }
コード例 #4
0
        public void WeakReferenceCollection_Remove_Test2()
        {
            using (var verify = new Verify())
            {
                var result = new WeakReferenceCollection<Foo>();

                Action add = () => result.Add(new Foo());

                add();

                Memory.CycleGC();

                var f = new Foo();
                result.Add(f);
                result.Add(f);
                result.Remove(f);
                result.Remove(f);
                result.CleanUp();

                verify.IsEmpty(result, "");
            }
        }