У меня есть следующий метод, который создает экземпляры одноразовых объектов.
Public Overridable Sub TransformXmlDocumentsToFileStream(ByVal stream As System.IO.Stream, ByVal xmlDocuments As IEnumerable(Of String), ByVal transformContext As XslTransformContext)
Dim readers As IEnumerable(Of XmlReader) = _
(From document In xmlDocuments _
Select XmlReader.Create(New System.IO.StringReader(document)))
With transformContext
TransformXmlDocumentsToFileStream(stream, readers, transformContext)
End With
End Sub
Затем я перебираю объекты другим методом:
For Each reader In readers
Using reader
transform.Transform(reader, writer)
End Using
Next
Анализатор кода Visual Studioвыдает предупреждение:
CA2000: Microsoft.Reliability: в методе 'TransformHelper.TransformXmlDocumentsToFileStream (Stream, IEnumerable (Of String), XslTransformContext)', объект 'New StringReader (document)' не уничтожаетсявдоль всех путей исключения.Вызовите System.IDisposable.Dispose для объекта 'New StringReader (document)' до того, как все ссылки на него выйдут из области видимости.
Поскольку нет ссылки на StringReader
, я не могу поместить его виспользование блока или иным образом избавиться от него.Можно ли просто игнорировать это предупреждение?StringReader
следует утилизировать, когда считыватель выходит из области видимости и собирается ли мусор, правильно?