diff --git a/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.AggregatingTagger.cs b/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.AggregatingTagger.cs index 6afc6dc25b551fc5878155356fd78d4e431ec0c2..b8a2b99f5f0a2e41c52ddc5f8da1f62cf2ab4703 100644 --- a/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.AggregatingTagger.cs +++ b/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.AggregatingTagger.cs @@ -163,30 +163,30 @@ public void Dispose() } } - private void DisconnectFromAllTaggers() + private void DisconnectFromTagger(IAccurateTagger tagger) { this.AssertIsForeground(); - foreach (var kvp in _idToProviderAndTagger) + tagger.TagsChanged -= OnUnderlyingTaggerTagsChanged; + var disposable = tagger as IDisposable; + if (disposable != null) { - var tagger = kvp.Value.Item2; - - DisconnectFromTagger(tagger); + disposable.Dispose(); } - - _idToProviderAndTagger.Clear(); } - private void DisconnectFromTagger(IAccurateTagger tagger) + private void DisconnectFromAllTaggers() { this.AssertIsForeground(); - tagger.TagsChanged -= OnUnderlyingTaggerTagsChanged; - var disposable = tagger as IDisposable; - if (disposable != null) + foreach (var kvp in _idToProviderAndTagger) { - disposable.Dispose(); + var tagger = kvp.Value.Item2; + + DisconnectFromTagger(tagger); } + + _idToProviderAndTagger.Clear(); } private void RegisterNotification(Action action)