レポートに 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 メソッドを呼び出すことを示しているようですが、それは正しくないようです。
アドバイスをいただければ幸いです。