private void Dispose(bool disposeManaged) { if (isDisposed) { return; } isDisposed = true; if (!disposeManaged) { return; } foreach (var subscription in subscriptions.Values) { subscription.CancelToken?.Cancel(true); if (subscription.IsSubscribed && (!subscription.Subscriber.LongLived || resourceCounter.Decrement(subscription.Subscriber.Name) == 0)) { amazonSnsFacade.UnsubscribeQueueFromTopic(subscription.SubscriptionArn); } subscriberRespoitroy.ExpireSubscriber(subscription.Subscriber); } }