gpt4 book ai didi

java - 终止在不同类中创建的进程

转载 作者:行者123 更新时间:2023-11-30 04:17:15 26 4
gpt4 key购买 nike

假设我在 Process 类中运行一个程序,例如:

Process p1 = Runtime.getRuntime().exec("setup.exe");
try {
p1.waitFor();
} catch (InterruptedException e) {
//Whatever
}

然后我的 GUI 类中还有一个取消按钮,类似于:

private void cancelButtonActionPerformed(ActionEvent e) {
//Need to interrupt the thread from here!
System.exit(0);
}

简单地按原样退出程序会使我在 Process.java 中创建的 setup.exe 进程继续运行,这是一个问题。通常我会调用 p1.destroy(),但我在两个类之间建立连接时遇到问题。

如有任何建议,我们将不胜感激!

编辑:

private void beginThread() {
SwingWorker<String, Void> myWorker = new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
//Do some stuff
}
return null;
}
};
myWorker.execute();
}

最佳答案

假设您在单独的线程中运行该进程,您可以从 GUI 类中调用 processThread.interrupt()

然后您只需将 try/catch 修改为:

try {
p1.waitFor();
} catch (InterruptedException e) {
Sys.err(e.toString());
//don't ignore the exception:
p1.destroy();
Thread.currentThread.interrupt(); //reset interrupted flag
}

关于java - 终止在不同类中创建的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com