В таких случаях я склонен писать что-то вроде этого и конец метода:
streamWriter.Flush(); // Only for writers, not for readers
streamWriter = null; // Show myself and other coders that lack of Dispose is not a mistake but it's intented
Этот подход - то, что я использую для потоковых декораторов, которые всегда располагают лежащие в основе потоки, стоит отметить, чтов некоторых случаях (например - DeflateStream
) вам необходимо вызвать .Dispose()
, но в таких случаях потоковые декораторы позволяют вам выбирать, хотите ли вы, чтобы они закрывали основной поток или нет.Это может выглядеть так:
DeflateStream deflateStream = new DeflateStream(fileReader.BaseStream, CompressionMode.Decompress, true);
BinaryReader deflateReader = new BinaryReader(deflateStream);
var articleText = deflateReader.ReadString();
deflateReader = null;
deflateStream.Close();
deflateStream.Dispose();
deflateStream = null;