我正在开发一个使用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)”中,“report”对象可以被处理多次。为避免生成System.ObjectDisposedException,您不应在一个对象上调用Dispose超过一次。
现在显然我可以改变代码以避免这个CA警告,但我的问题是:我应该吗?
Crystal Reports ReportDocument.Close()方法是否做好了处理资源清理的所有工作? 这个消息似乎表明Close方法调用了Dispose方法,但这似乎并不正确。
任何建议将不胜感激。