コード例 #1
0
 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);
 }
コード例 #2
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);
    }