Как я могу убедиться, что следующий код удаляет все объекты лучше? В настоящее время анализ кода говорит мне
Ошибка 45 CA2202: Microsoft.Usage: объект 'ns' может быть размещен более одного раза в методе 'CPCommunicator.GetResults (string)'. Во избежание генерации исключения System.ObjectDisposedException не следует вызывать метод Dispose для объекта более одного раза .: строки: 64, 65
NetworkStream ns = null;
StreamWriter requestStream = null;
TextReader responseStream = null;
var results = new StringBuilder();
try
{
ns = new NetworkStream(CreateConnection(), true);
requestStream = new StreamWriter(ns);
requestStream.Flush();
responseStream = new StreamReader(ns);
requestStream.Write(reportData);
requestStream.Flush();
while (responseStream.Peek() != -1)
{
var currentLine = responseStream.ReadLine();
results.Append(currentLine);
results.Append("\n");
}
}
finally
{
if (requestStream != null) requestStream.Close();
if (responseStream != null) responseStream.Close();
if (cpNetworkStream != null) cpNetworkStream.Close();
}
Поскольку и requestStream, и responseStream используют ns, они оба располагают ns, поэтому, чтобы удовлетворить предупреждение анализа кода, я должен закомментировать последние два метода close в блоке finally. Но действительно ли я хочу сделать это ?????