Я работаю над приложением, использующим 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, но это кажется неправильным.
Любые советы будут оценены.