gpt4 book ai didi

java - JACOB 没有正确释放对象

转载 作者:行者123 更新时间:2023-12-02 10:58:29 26 4
gpt4 key购买 nike

我有一个 eclipse 插件,它使用 Jacob 连接到 COM 组件。但在我完全关闭插件后,.exe 文件仍卡在 Windows 进程中。

我使用ComThread.InitMTA(true)进行初始化,并确保在关闭应用程序之前为我创建的每个COM对象调用SafeRelease(),并且我调用ComThread.Release() 在最后。

我是否有未完成的事情?

最佳答案

一些进一步的建议:

  1. 将对 ComThread.Release() 的调用移至 finally block 中,否则如果抛出异常,线程将保持附加状态。

  2. 检查是否在每个使用 COM 对象的线程中调用 ComThread.InitMTAComThread.Release。如果您忘记在工作线程中执行此操作,那么该线程将自动附加并且永远不会分离。

  3. 避免 InitSTA 并坚持使用 InitMTA。即使只有一个线程使用 COM,我也发现 InitSTA 很不稳定。我不知道 JACOB 的内部编码机制是如何工作的,但我最终得到了“幽灵”对象,这些对象看起来有效,但在调用它们的方法时什么也不做。

幸运的是,我从来不需要修改 JACOB 库中的任何代码。

关于java - JACOB 没有正确释放对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/980483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com