我有一个工厂类,它保留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是否为托管资源,并且我正确处理它。
答案 0 :(得分:0)
我正在回答我自己的问题。它给了我Tumbleweed不活动的徽章,所以我做了更多的挖掘并从this post得出结论,如果一个对象实现了IDisposable,它就是一个托管资源,我正在妥善处理它。