private PythonTextBufferInfo ReplaceBufferInfo() { TraceWithStack("ReplaceBufferInfo"); var newInfo = new PythonTextBufferInfo(Services, Buffer); foreach (var sink in _eventSinks) { newInfo._eventSinks[sink.Key] = sink.Value; } Buffer.Properties[PythonTextBufferInfoKey] = newInfo; Buffer.ContentTypeChanged -= Buffer_ContentTypeChanged; Buffer.Changed -= Buffer_TextContentChanged; Buffer.ChangedLowPriority -= Buffer_TextContentChangedLowPriority; if (Buffer is ITextBuffer2 buffer2) { buffer2.ChangedOnBackground -= Buffer_TextContentChangedOnBackground; } Interlocked.Exchange(ref _waitingForEntry, null)?.TrySetResult(null); InvokeSinks(new PythonNewTextBufferInfoEventArgs(PythonTextBufferInfoEvents.NewTextBufferInfo, newInfo)); _traceLog?.Dispose(); return(newInfo); }
protected virtual void Dispose(bool disposing) { if (!_disposed) { _disposed = true; _log?.Flush(synchronous: true); if (disposing) { if (_log != null) { _log.Dispose(); } } } }
protected virtual void Dispose(bool disposing) { if (!_disposed) { _disposed = true; _log?.Flush(synchronous: true); if (disposing) { if (_log != null) { _log.Dispose(); } if (PackageManager != null) { PackageManager.InstalledPackagesChanged -= PackageManager_InstalledFilesChanged; } } } }