我目前正在尝试编写一个 Windows 窗体应用程序(在 C# 中),它可以启动和停止多个 Java 进程(使用参数来运行特定的 jar 文件)。
我开始每个过程都没有问题;但是我需要找到一种方法让应用程序在退出时关闭所有这些应用程序,无论采用哪种方式(作为未知数量的 java 进程),我都在一个单独的工作线程中运行,以避免占用主线程同时应用程序正在运行(并捕获进程输出)。
我看过这个:关闭应用程序时关闭另一个进程
但它似乎不适用于我的目的(它不会关闭进程)。
我目前正在尝试编写一个 Windows 窗体应用程序(在 C# 中),它可以启动和停止多个 Java 进程(使用参数来运行特定的 jar 文件)。
我开始每个过程都没有问题;但是我需要找到一种方法让应用程序在退出时关闭所有这些应用程序,无论采用哪种方式(作为未知数量的 java 进程),我都在一个单独的工作线程中运行,以避免占用主线程同时应用程序正在运行(并捕获进程输出)。
我看过这个:关闭应用程序时关闭另一个进程
但它似乎不适用于我的目的(它不会关闭进程)。
它似乎不适用于我的目的..(它不会关闭进程)。
但它有什么作用?它是否至少关闭了 Java 窗口?您的 Java 应用程序甚至有窗口吗?
一般来说,
Process.CloseMainWindow/Process.Close
您尝试(但失败)的方法所做的。如果您的 Java 应用程序是控制台应用程序,您可以尝试关闭其/它们的标准输入和/或进行模拟^C
。Process.Kill
来终止您的 Java 子进程——不优雅。您可能希望您的控制进程首先尝试上面的 1. 或 2.,等到所有子进程都已退出或直到经过很短的时间(例如 3 秒),然后才继续Process.Kill
处理尚未退出的任何进程.procrss.kill
Kill 方法是使进程以暴力和迅速的方式结束的极好方法。Kill 方法可以抛出一些异常。但它通常不会而且通常会实现你想要的目标——介于冷血谋杀和快速无痛处决之间。