public override void Flush() { CheckDisposed(); _writeLock.Wait(); try { FirstWrite(); } finally { _writeLock.Release(); } // TODO: Wait for data to drain? }