正在处理.NET Crystal报表文档

本文关键字:报表 文档 Crystal NET 处理 | 更新日期: 2023-09-27 17:59:45

我有一个工厂类,它保存了一个CrystalReports.Engine.ReportDocument的实例。我正在根据一篇很棒的SO文章实现IDisposable,但不确定资源是托管的还是非托管的。

我想它是从a开始管理的。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是否是托管资源,以及我是否正确处理了它。

正在处理.NET Crystal报表文档

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