小编Foo*_*sie的帖子

清理Crystal Reports ReportDocument对象使用的资源的最佳方法是什么?

我正在开发一个使用Crystal Reports进行报告的应用程序.它在ReportDocument对象中打开一个给定的报告,完成它需要做的事情,然后关闭报告.

using (var report = OpenReport(reportSourceInfo))
{
    // Do stuff with the report
    report.Close();
}
Run Code Online (Sandbox Code Playgroud)

OpenReport方法对源文件进行一些验证,并返回一个打开的ReportDocument对象.

测试表明,此代码执行了它的目的,并且似乎没有任何问题.我真正建议的问题是当我进行报告项目的代码分析(CA)构建时,我得到以下CA消息:

CA2202:Microsoft.Usage:对象'report'可以在方法'CrystalReportingProvider.ReportExecute(ReportSourceInformation)'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose.

现在显然我可以改变代码,所以我没有得到这个CA警告,但我的问题是我应该吗?

Crystal Reports ReportDocument.Close()方法是否可以正确处理资源清理?该消息似乎表明Close方法调用Dispose方法,但这似乎不正确.

任何意见,将不胜感激.

c# code-analysis idisposable crystal-reports reportdocument

11
推荐指数
1
解决办法
4822
查看次数