protected override void Dispose(bool disposing) { base.Dispose(disposing); if (!_isDisposed) { lock (_buffer) { _isDisposed = true; Monitor.Pulse(_buffer); } } }