コード例 #1
0
 public void Subscribe(INotificationEventObserver observer)
 {
     lock (@lock)
     {
         observers.Add(new WeakReference <INotificationEventObserver>(observer));
     }
 }
コード例 #2
0
 public void Unsubscribe(INotificationEventObserver observer)
 {
     lock (@lock)
     {
         for (int i = 0; i < observers.Count; i++)
         {
             if (observers[i].TryGetTarget(out var tgt) == false)
             {
                 observers.RemoveAt(i--);
                 continue;
             }
             if (ReferenceEquals(tgt, observer))
             {
                 observers.RemoveAt(i--);
             }
         }
     }
 }