java - 应用程序为什么/如何保留另一个进程创建的互斥体引用?

标签 java vb6 winapi mutex launch4j

我有这个有点不寻常的流程结构:

  1. Lau​​nch4J 启动我的 Java 应用程序。它创建一个互斥体来为 Java 应用程序提供单实例功能。
  2. Java 应用程序启动一个 VB6 应用程序,该应用程序可以有多个实例。
  3. 当 Java 应用程序终止时,VB6 应用程序仍在运行。 (期望的行为)

问题是:Launch4J 创建的互斥体仅在 VB6 应用程序终止后才被释放。因此,不可能再次启动 Java 应用程序。

为什么会发生这种情况?我没有明确打开互斥锁...

我首先怀疑这是因为 Java 使用了 CreateProcessbInheritHandles == true,但是当我启动 notepad.exe 时,问题并没有发生。

编辑:我仍然遇到这个问题。任何指示表示赞赏!

最佳答案

Launch4J 是否在终止前释放互斥体并关闭其句柄?抱歉,我不知道 Java 如何包装 OS Mutex 函数,但您应该确保在线程结束之前显式释放互斥体并关闭其句柄。

关于java - 应用程序为什么/如何保留另一个进程创建的互斥体引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366150/

相关文章:

java - JToggleButton - 如何更改颜色?

java - 无法让 Mediaplayer 停止

vb6 - 获取有关使用 FileSystemObject 的木马警告

c++ - 获取文档目录

c++ - AddFontResource + SetCurrentConsoleFontEx 不会更改控制台字体

c++ - 写入文件中间(不覆盖数据)

java - Hibernate 单文件数据库 : setup for thin client

variables - 当我没有正确声明变量时,使 VB 编译器发出警告

vb6 - VB 6 中的 Command$ 和 Command 有什么区别?

java - 为什么Java中不同对象的hashCode()可以返回相同的值?