我有这个有点不寻常的流程结构:
- Launch4J 启动我的 Java 应用程序。它创建一个互斥体来为 Java 应用程序提供单实例功能。
- Java 应用程序启动一个可以有多个实例的 VB6 应用程序。
- 当 Java 应用程序终止时,VB6 应用程序仍在运行。(期望的行为)
问题是:Launch4J 创建的互斥锁只有在 VB6 应用程序终止后才会释放。因此,无法再次启动 Java 应用程序。
为什么会发生这种情况?我没有明确地打开互斥锁......
我首先怀疑这是因为 Java 使用CreateProcess
with bInheritHandles == true
,但是当我开始时问题并没有出现notepad.exe
。
编辑:我仍然有这个问题。任何指针表示赞赏!