c# - 在应用程序退出时停止 Java 进程

标签 c# java process

我目前正在尝试编写一个 Windows 窗体应用程序(用 C# 编写),它可以启动和停止多个 Java 进程(带有运行特定 jar 文件的参数)。

启动每个进程都没有问题;但是,我需要找到一种方法,使应用程序在退出时关闭所有进程,无论以哪种方式(未知数量的 java 进程),我都在单独的工作线程中运行,以避免在应用程序运行时占用主线程(并捕获进程输出)。

我看了一下这个:Close another process when application is closing

但它似乎不适用于我的目的(它不会关闭进程)。

最佳答案

it does not seem to work for my purpose.. (it doesn't close the processes).

但是它有什么作用呢?它至少会关闭 Java 窗口吗?您的 Java 应用程序是否有窗口?

一般来说,

  1. 如果可能(即,如果您自己构建 Java 应用程序),您应该在 C# 和 Java 应用程序之间建立一种机制,以优雅地向 Java 应用程序发出关闭信号(套接字等)
  2. 如果失败,您仍然可以正常关闭 Java 应用程序(如果它们是图形化的)by sending WM_CLOSE 。这就是您尝试(但失败)的 Process.CloseMainWindow/Process.Close 方法所做的事情。如果您的Java应用程序是控制台应用程序,您可以尝试关闭其/他们的standard input和/或 simulating ^C相反。
  3. 最后,当所有其他方法都失败时,请使用 Process.Kill 来终止您的 Java 子进程——不优雅地终止。您可能希望控制进程首先尝试上述 1. 或 2.,等待所有子进程退出或经过一小段时间(例如 3 秒),然后才对尚未退出的进程继续执行 Process.Kill

关于c# - 在应用程序退出时停止 Java 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13442673/

相关文章:

java - 默认选择节点

c - 我如何识别一个进程

multithreading - 为什么我应该使用线程而不是使用进程?

Java - 如何检查另一个(非 Java)进程是否正在 Linux 上运行

c# - 如何在 Excel 2002 中将一组工作表打印为 PDF?

c# - 在c#中使用xelement创建动态xml

java - 在 TextView 中将字符串的一部分设为粗体

java - 在创建可执行 jar 时指定 JVM 参数(而不是在执行 jar 时)

c# - 像 C# 的计算引擎这样的东西?

c# - 如何在定位元素之前等待框架加载?