我目前正在尝试编写一个Windows窗体应用程序(在C#中),它可以启动和停止多个Java进程(使用参数来运行特定的jar文件)。
我开始每个过程都没有问题;但是我需要找到一种方法让应用程序在退出时关闭所有这些,无论哪种方式(是一个未知数量的java进程),我在每个单独的工作线程中运行,以避免占用主线程应用程序正在运行(并捕获进程输出)。
我看了一下这个:Close another process when application is closing
但它似乎不适用于我的目的(它不会关闭进程)。
答案 0 :(得分:1)
它似乎不适用于我的目的..(它不会关闭进程)。
但是它做了什么?它至少关闭了Java窗口吗?您的Java应用程序甚至有窗口吗?
一般来说,
Process.CloseMainWindow/Process.Close
方法。如果您的Java应用程序是控制台应用程序,则可以尝试关闭其/ standard input和/或simulating ^C
。Process.Kill
来终止您的Java子进程 - 非常不合理。您可能希望您的控制过程首先尝试1.或2.上述,等待所有子进程都退出或直到短时间(例如3s)已经过去,然后继续Process.Kill
进行任何操作流程尚未退出。答案 1 :(得分:0)
procrss.kill
Kill方法是让进程遇到暴力和快速结束的绝佳方法。 Kill方法可以抛出一些例外。但它往往不能并且通常会实现你所希望的目标 - 这是介于冷血谋杀和快速无痛的执行之间。