Я работаю над приложением, которое использует 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 () все g правильно обрабатывать очистку ресурсов? Сообщение, кажется, указывает на то, что метод Close вызывает метод Dispose, но это кажется неправильным.
Мы будем благодарны за любой совет.