有什么方法可以“强制”挂起OCX的程序关闭?

时间:2009-10-20 16:34:14

标签: delphi

我的Delphi 7程序使用OCX来控制某些硬件。我没有任何示例代码,所以我正在通过正确加载/使用/卸载控件。不幸的是,如果我使用硬件并加载OCX,当应用程序关闭时,主进程将不会完全退出 如果我使用硬件,OCX加载,一切正常。在程序关闭时,OCX没有正确卸载,我的程序没有完全关闭。它在内存中留下了24兆的小尺寸,只能在任务管理器中看到。 如果我重新运行该程序,一切都很完美,包括硬件。如果我使用硬件然后关闭程序,它将留下另外24兆的占用空间。冲洗并重复。 直到我能让OCX代码正常工作,无论如何,我现在可以“强制”卸载OCX控件了吗?或者强制终止流程?

3 个答案:

答案 0 :(得分:0)

OCX控件就像一个dll。当进程终止时,它会以某种方式卸载。 Windows在关闭进程时回收所有内存。你在哪里看到这段记忆?这个程序只叫做Activity Monitor吗?可能是该程序不正确吗?

更新: 在您提供的新信息之后,很明显它不是关于释放内存,而是关于未关闭/终止的进程。

如果某些线程仍在运行,可能会发生这种情况。第三方控件可能会创建线程,但尚未终止它们。这可能是一个错误,或者你必须在第三方控件上调用一些finalize / uninitialize / dispose / close方法?

答案 1 :(得分:0)

尝试在调试器下运行程序,在所有单元终结部分和任何OnClose方法中都有断点。如果您的表单没有OnClose方法,请添加一个。然后观察应用程序终止并查看您获得的距离。

答案 2 :(得分:0)

您是否尝试过调用Windows ExitProcess函数?