Я работаю над приложением, которое использует Crystal Reports для создания отчетов. Он открывает данный отчет в объекте ReportDocument, делает то, что ему нужно, и затем закрывает отчет.
using (var report = OpenReport(reportSourceInfo))
{
// Do stuff with the report
report.Close();
}
Метод OpenReport выполняет некоторую проверку исходного файла и возвращает открытый объект ReportDocument.
Тестирование показало, что этот код выполняет то, для чего предназначен, и, похоже, не имеет проблем. Проблема, по которой я действительно советуюсь, заключается в том, что, когда я делаю сборку анализа кода (CA) проекта отчетов, я получаю следующее сообщение CA:
CA2202: Microsoft.Usage: объект «отчет» может быть размещен более одного раза в методе «CrystalReportingProvider.ReportExecute (ReportSourceInformation)». Во избежание генерации исключения System.ObjectDisposedException не следует вызывать метод Dispose для объекта более одного раза.
Теперь, очевидно, я могу изменить код так, чтобы я не получил это предупреждение CA, но у меня вопрос, должен ли я?
Делает ли метод Crystal Reports ReportDocument.Close () все для правильной обработки ресурсов? Кажется, что в сообщении указано, что метод Close вызывает метод Dispose, но это не совсем верно.
Любой совет будет оценен.