Правило анализа кода CA2000 / CA2202

Я пытаюсь убедиться, что мой код следует правильному удалению объектов, поэтому я применяю эти правила как ошибки. Но у меня проблемы с этим разделом кода

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;

class MyClass
{  
    public String ToXml()
    {
        var objSerializer = 
            new DataContractSerializer(GetType());
        var objStream = new MemoryStream();
        StreamReader objReader;

        String strResult;
        try
        {
            // Serialize the object
            objSerializer.WriteObject(objStream, this);

            // Move to start of stream to read out contents
            objStream.Seek(0, SeekOrigin.Begin);

            objReader = new StreamReader(objStream);

            try
            {
                // Read Contents into a string
                strResult = objReader.ReadToEnd();
            }
            finally
            {
                objReader.Dispose();
            }
        }
        finally
        {
            if (objStream != null)
            {
                // objStream.Dispose();
            }
        }

        return strResult;
    }
}

. Если я закомментирую objStream.Dispose(), я получу CA2000, поскольку я не удаляю объект, но если я удаляю комментарий, он говорит, что я удаляю более одного раза.

Что еще относится к удалению объекта? или я просто делаю это неправильно при работе с несколькими потоками?

6
задан Steven 16 July 2012 в 15:30
поделиться