处理.NET Crystal ReportDocument

时间:2014-04-23 16:58:55

标签: c# .net crystal-reports

我有一个工厂类,它保留CrystalReports.Engine.ReportDocument的实例。我按an awesome SO post实现IDisposable,但不确定资源是管理还是非托管。

我假设它是从.NET库开始管理的,并按照以下方式进行管理:

using CrystalDecisions.CrystalReports.Engine;

public class ReportFactory: IDisposable {

    public ReportDocument Report { get; private set; }
    private bool IsDisposed { get; set; }

    public void Dispose() {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    private void Dispose(bool freeManagedReousrces) {
        try {
            if (IsDisposed) return;
            if ((freeManagedReousrces)) {
                // Release managed resources.
                if (Report != null) {
                    Report.Dispose();
                }
            }
            // Release un-managed resources.
            // None
        }
        finally {
            IsDisposed = true;
        }
    }

    // No finalizer needed: no unmanaged resources.
}

请验证ReportDocument是否为托管资源,并且我正确处理它。

1 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题。它给了我Tumbleweed不活动的徽章,所以我做了更多的挖掘并从this post得出结论,如果一个对象实现了IDisposable,它就是一个托管资源,我正在妥善处理它。