private void Dispose(bool disposing) { lock (this) { if (!m_disposed) { if (disposing) { if (_errorProvider != null) { try { _errorProvider.Tasks.Clear(); } catch (InvalidOperationException) { // this may occur if the SVsServiceProvider somehow has been uninstalled before our Dispose method is called } _errorProvider.Dispose(); _errorProvider = null; } BufferIdleEventUtil.RemoveBufferIdleEventListener(_buffer, ResolveBuffer); if (_document != null && _document.TextBuffer != null) { ResolverTaggers.Remove(_document.TextBuffer); } } m_disposed = true; } } }
internal ResolverTagger(ITextBuffer buffer, IServiceProvider serviceProvider, ITextDocumentFactoryService textDocumentFactory) { _buffer = buffer; if (!textDocumentFactory.TryGetTextDocument(_buffer, out _document)) { _document = null; } Snapshot = null; // this makes sure the next snapshot will look different _errorProvider = new ErrorListProvider(serviceProvider); BufferIdleEventUtil.AddBufferIdleEventListener(_buffer, ResolveBuffer); }
internal ResolverTagger(ITextBuffer buffer, IServiceProvider serviceProvider, ITextDocumentFactoryService textDocumentFactory) { _buffer = buffer; if (!textDocumentFactory.TryGetTextDocument(_buffer, out _document)) { _document = null; } Snapshot = null; // this makes sure the next snapshot will look different _errorProvider = new ErrorListProvider(serviceProvider); _filename = _document != null ? _document.FilePath : "<program>"; BufferIdleEventUtil.AddBufferIdleEventListener(_buffer, ResolveBuffer); this.RunResolver = true; }