public virtual void add_VisibleChange([In] IOmniRigXEvents_VisibleChangeEventHandler obj0) { bool lockTaken; try { Monitor.Enter((object)this, ref lockTaken); if (this.m_ConnectionPoint == null) { this.Init(); } IOmniRigXEvents_SinkHelper xeventsSinkHelper = new IOmniRigXEvents_SinkHelper(); int pdwCookie = 0; this.m_ConnectionPoint.Advise((object)xeventsSinkHelper, out pdwCookie); xeventsSinkHelper.m_dwCookie = pdwCookie; xeventsSinkHelper.m_VisibleChangeDelegate = obj0; this.m_aEventSinkHelpers.Add((object)xeventsSinkHelper); } finally { if (lockTaken) { Monitor.Exit((object)this); } } }
public virtual void remove_VisibleChange([In] IOmniRigXEvents_VisibleChangeEventHandler obj0) { bool lockTaken; try { Monitor.Enter((object)this, ref lockTaken); if (this.m_aEventSinkHelpers == null) { return; } int count = this.m_aEventSinkHelpers.Count; int index = 0; if (0 >= count) { return; } do { IOmniRigXEvents_SinkHelper aEventSinkHelper = (IOmniRigXEvents_SinkHelper)this.m_aEventSinkHelpers[index]; if (aEventSinkHelper.m_VisibleChangeDelegate != null && ((aEventSinkHelper.m_VisibleChangeDelegate.Equals((object)obj0) ? 1 : 0) & (int)byte.MaxValue) != 0) { this.m_aEventSinkHelpers.RemoveAt(index); this.m_ConnectionPoint.Unadvise(aEventSinkHelper.m_dwCookie); if (count <= 1) { Marshal.ReleaseComObject((object)this.m_ConnectionPoint); this.m_ConnectionPoint = (IConnectionPoint)null; this.m_aEventSinkHelpers = (ArrayList)null; return; } goto label_11; } else { ++index; } }while (index < count); goto label_12; label_11: return; label_12 :; } finally { if (lockTaken) { Monitor.Exit((object)this); } } }