在C#中查看Crystal Reports文档后,应用程序在退出时会出现此错误。
我在报告上调用了Close()和Dispose()方法。
从我读过的内容来看,这是因为COM对象在卸载后被调用,但我看不出这是怎么回事。
有没有人见过这个?或者你能推荐一种工具来追踪问题吗?
谢谢!
[编辑]
抛出异常时的堆栈跟踪:
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.ReportAppServer.ISCDClientDocumentEvents_EventProvider.RemoveOnClosed(CrystalDecisions.ReportAppServer.ClientDoc._ISCDClientDocumentEvents_OnClosedEventHandler handler)+ 0x137 bytes
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.ReportAppServer.ISCDClientDocumentEvents_EventProvider.OnClosed.remove(CrystalDecisions.ReportAppServer.ClientDoc._ISCDClientDocumentEvents_OnClosedEventHandler value)+ 0x33 bytes
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.DisconnectEventRelay()+ 0x75 bytes CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.InternalClose(bool bSetupForNextReport,bool bAutoClose)+ 0x10e bytes
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Dispose(bool bDisposeManaged)+ 0xb6 bytes
System.dll!System.ComponentModel.Component.Dispose()+ 0x15 bytes
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.CrystalReports.Engine.ReportDocument.ClearCache(bool clearDocument)+ 0x1dd bytes
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.CrystalReports.Engine.ReportDocument.InternalClose(bool bSetupForNextReport)+ 0x81 bytes
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.CrystalReports.Engine.ReportDocument.Close()+ 0x3f bytes
CrystalDecisions.CrystalReports.Engine.dll!CrystalDecisions.CrystalReports.Engine.ReportDocument.ExitHandler(对象发送者,System.EventArgs e)+ 0x120字节
KERNEL32.DLL!75e6339a()
[下面的框架可能不正确和/或缺失,没有为kernel32.dll加载符号]
ntdll.dll中!77269ef2()
ntdll.dll!77269ec5()
答案 0 :(得分:0)
如果要处置Com对象,则必须调用COMObjects
Release方法,如下所示
System.Runtime.InteropServices.Marshal.ReleaseComObject( YourComObjects Name );
答案 1 :(得分:0)
事实证明这是由线程引起的 - 显示报告的表单处于单独的线程中,并且当主线程退出时抛出异常。
如果其他人遇到此问题,请尝试仅在主线程中使用Crystal Reports。