protected override void Dispose(DisposeReason reason) { if (!_isDisposed) { _isDisposed = true; if (reason != DisposeReason.Finalize) { lock (_lockWrite) { if (_writer != null) { _writer.Stop(); _writer.Dispose(); } } } else { if (_writer != null) { _writer.FinalizeFast(); } } } }