/// <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(); } }
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, ""); } }
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, ""); } }
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, ""); } }