protected TCPStreamMonitorStack GetStackForMonitor(NetworkStreamMonitor nsToFind) { lock (lStacks) { foreach (TCPStreamMonitorStack sStack in lStacks) { foreach (NetworkStreamMonitor nsModifier in sStack.Monitors) { if (nsModifier == nsToFind) { return(sStack); } } } return(null); } }
void nsMonitor_LoopClosed(object sender, EventArgs e) { NetworkStreamMonitor nsMonitor = (NetworkStreamMonitor)sender; nsMonitor.LoopError -= new ExceptionEventHandler(nsMonitor_LoopError); nsMonitor.LoopClosed -= new EventHandler(nsMonitor_LoopClosed); TCPStreamMonitorStack tsmsStack = GetStackForMonitor(nsMonitor); if (tsmsStack != null && tsmsStack.IsClosed) { lock (lStacks) { lStacks.Remove(tsmsStack); InvokeExternal(StackDestroyed, new TCPStreamMonitorEventArgs(tsmsStack)); } } }