private void OnTopicEmpty(object sender, EventArgs e) { lock (mLock) { IWampTopic topic = sender as IWampTopic; if (!topic.HasObservers) { topic.TopicEmpty -= OnTopicEmpty; topic.Dispose(); TryRemoveTopicByUri(topic.TopicUri, out IWampTopic deletedTopic); } } }
private void OnTopicEmpty(object sender, EventArgs e) { lock (mLock) { IWampTopic topic = sender as IWampTopic; if (!topic.HasSubscribers) { topic.TopicEmpty -= OnTopicEmpty; topic.Dispose(); mSubscriptionIdToTopic.TryRemoveExact(topic.SubscriptionId, topic); if (mTopicUriToSubject.TryRemoveExact(topic.TopicUri, topic)) { RaiseTopicRemoved(topic); } } } }
public void Dispose() { mTopic.Dispose(); mDisposable.Dispose(); }