public int removeListener(AsynResourceMgr.ListenDelegate dele) { foreach (Listener ls in listeners) { if (ls.dele == dele) // different instance of the same class, delegate is different! { listeners.Remove(ls); return(ls.deleCount); } } return(0); }
public void addListener(AsynResourceMgr.ListenDelegate dele, bool errNotify) { //Here is some problem of efficiency foreach (Listener ls in listeners) { if (ls.dele == dele) { ls.deleCount++; // add dele count if (ls.errNotify == true) { ls.errNotify = errNotify; } return; } } //create a new one Listener l = new Listener(); l.errNotify = errNotify; l.deleCount = 1; // once l.dele = dele; listeners.Add(l); }