示例#1
0
 public static void AutoUnSubscribe()
 {
     string[] array = new string[Dispatcher.instance.domains.Count];
     Dispatcher.instance.domains.Keys.CopyTo(array, 0);
     for (int i = 0; i < array.Length; i++)
     {
         Dispatcher.Domain domain = (Dispatcher.Domain)Dispatcher.instance.domains[array[i]];
         string[]          array2 = new string[domain.subscribers.Count];
         domain.subscribers.Keys.CopyTo(array2, 0);
         for (int j = 0; j < array2.Length; j++)
         {
             List <Subscription> list = (List <Subscription>)domain.subscribers[array2[j]];
             for (int k = 0; k < list.Count; k++)
             {
                 Subscription subscription = list[k];
                 if (subscription.autoUnSubscribe)
                 {
                     domain.RemoveSubscription(subscription);
                 }
             }
         }
     }
 }
示例#2
0
 public static void UnSubscribe(Subscription subscription)
 {
     if (subscription == null)
     {
         return;
     }
     if (Dispatcher.instance.domains == null || Dispatcher.instance.domains.Count == 0)
     {
         return;
     }
     if (Dispatcher.instance.domains.Contains(subscription.domain))
     {
         Dispatcher.Domain domain = (Dispatcher.Domain)Dispatcher.instance.domains[subscription.domain];
         if (domain == null || domain.subscribers == null || domain.subscribers.Count == 0)
         {
             return;
         }
         domain.RemoveSubscription(subscription);
         if (!Dispatcher.instance.domains.Contains(subscription.domain))
         {
             Dispatcher.instance.domainNames.Remove(subscription.domain);
         }
     }
 }