private void OpenStream(string stateId, OpenStreamDelegate operation) { bool dispose; Stream stream = GetStream(stateId, out dispose); try { ThrowIfInvalidStream(stream); operation(stream); } finally { if (dispose && stream != null) { ((IDisposable)stream).Dispose(); } } }