Пример #1
0
 protected void InvokeListenersForWeakEvent(int eventIndex, WeakEventArgs args)
 {
     List<WeakReference> listeners = _listeners[eventIndex];
     if (listeners.Count > 0)
     {
         for (int i = listeners.Count - 1; i >= 0; i--)
         {
             if (listeners[i].IsAlive && listeners[i].Target != null)
             {
                 try
                 {
                     ((IWeakEventTarget)listeners[i].Target).WeakEventNotification(this, _weakEvents[eventIndex], args);
                 }
                 catch(Exception exc)
                 {
                     if (_logger != null)
                     {
                         _logger(1, string.Format("WEAK_EVT_SRC {0}: ERROR NOTIFYING TARGET ({1}) {2}; StackTrace: {3}", _sourceID, exc.GetType(), exc.Message, (exc.StackTrace != null ? exc.StackTrace.Replace("\r", "").Replace("\n", " ") : " -- STACK TRACE NOT AVAILABLE -- ")));                                
                     }
                 }
             }
             else
             {
                 listeners.RemoveAt(i);
             }
         }
     }
 }
Пример #2
0
 public WeakEventArgs(object realSource, string eventName, WeakEventArgs originalEventArgs)
 {
     RealSource = realSource;
     EventName = eventName;
     OriginalEventArgs = originalEventArgs;
 }