public void RemoveHandler(object o, System.Reflection.MethodInfo method) { //if (!obj) // return; if (obj == null) { return; } System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> > .Enumerator enumerator = obj.GetEnumerator(); try { while (enumerator.MoveNext()) { Oranikle.Studio.Controls.WeakDelegate <T> weakDelegate = enumerator.Current; System.WeakReference weakReference = weakDelegate.Obj; object obj1 = weakReference.Target; if ((obj1 == o) && (weakDelegate.Method == method)) { obj.Remove(weakDelegate); return; } } } finally { enumerator.Dispose(); } }
public void Invoke(object sender, T e) { //if (!obj) // return; if (obj == null) { return; } lock (obj) { System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> > list1 = new System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> >(); System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> > .Enumerator enumerator1 = obj.GetEnumerator(); try { while (enumerator1.MoveNext()) { Oranikle.Studio.Controls.WeakDelegate <T> weakDelegate1 = enumerator1.Current; if (!weakDelegate1.IsAlive) { list1.Add(weakDelegate1); } } } finally { enumerator1.Dispose(); } System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> > .Enumerator enumerator = list1.GetEnumerator(); try { while (enumerator.MoveNext()) { Oranikle.Studio.Controls.WeakDelegate <T> weakDelegate = enumerator.Current; obj.Remove(weakDelegate); } } finally { enumerator.Dispose(); } System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> > list2 = new System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> >(); System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> > .Enumerator enumerator2 = obj.GetEnumerator(); try { while (enumerator2.MoveNext()) { Oranikle.Studio.Controls.WeakDelegate <T> weakDelegate3 = enumerator2.Current; list2.Add(weakDelegate3); } } finally { enumerator2.Dispose(); } System.Collections.Generic.List <Oranikle.Studio.Controls.WeakDelegate <T> > .Enumerator enumerator3 = list2.GetEnumerator(); try { while (enumerator3.MoveNext()) { Oranikle.Studio.Controls.WeakDelegate <T> weakDelegate2 = enumerator3.Current; try { weakDelegate2.Invoke(sender, e); } catch (System.Exception e1) { log.Error(e1); } } } finally { enumerator3.Dispose(); } } }