我正在开发一个使用 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 方法,但这似乎并不正确。
任何意见,将不胜感激。