我必须使用 ActiveX 对象 (QlikOCX.ocx)。所以我创建了一个非常小的示例应用程序,它工作正常,但是当我关闭应用程序时,我收到如下错误:
“application.exe 不再工作 -> 在线搜索解决方案并关闭程序 -> 关闭程序
问题详细信息:问题事件名称:APPCRASH ..."
我想知道是否有可能以某种方式捕捉到这个错误?谢谢!
您得到的错误可能有很多原因。这可能是您自己的代码或 ActiveX 控件中的问题。例如,您的进程可能会终止,但其中一个线程仍在运行,正在轮询信息或其他什么。
很有可能您没有正确释放 ActiveX 控件,从而导致一些未完成的事情被抛在脑后。在调试器中运行您的应用程序可以为您提供错误的位置,但它可能会更复杂一些。有时,sh*t 只是发生了……
您是否创建了一个小型控制台应用程序来测试此 OCX?还是您将其作为组件导入并添加到表单中?
对于控制台应用程序,请确保您没有使用全局变量来存储 OCX 对象!全局接口对象并不总是正确释放。
如果在表单上使用组件,请在此表单上添加 OnClose 事件并在此事件中添加代码以清理 OCX 控件。不要释放它,而是看看它是否有“关闭”、“清除”或“终止”功能或其他需要调用的清理方法。同样,不要将全局变量用于基于接口的类型,如 OCX 控件。
在退出应用程序之前尝试调用 ActiveX.CoFreeUnusedLibraries。如果您在 7.1 之前使用 Delphi,然后查看Quality Central Report#:3272,则存在错误。