Code Anlysis Rule CA2000 / CA2202
Я пытаюсь убедиться, что мое кодирование соответствует правильному удалению объектов, поэтому я применяю эти правила как ошибки. Но у меня возникли проблемы с этим разделом кода
<code>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; } } </code>
Если я закомментируюobjStream.Dispose()
Я получаю CA2000, поскольку я не удаляю объект, но если я удаляю комментарий, он говорит, что я удаляю несколько раз.
Что еще выбрасывает объект? или я просто делаю это неправильно при работе с несколькими потоками?