2012-07-03 42 views
0

我正在創建一個SWT應用程序,調用java.lang.Process中的外部可執行文件(比如說abc.exe)。這個新過程是在我的複合材料的「開始」按鈕上創建的。java.lang.Process Kill not done

問題是,如果執行文件abc.exe掛起;我的整個SWT外殼都會掛起!所以我想添加一個名爲「停止」的新按鈕,這樣用戶可以輕鬆地殺死掛起的進程,但由於所有內容都在單個線程中執行,因此我也無法按'停止'。

任何人都可以告訴我/告訴我如何以最好的方式解決這個問題。

很多謝謝,Tor

+2

這一切都表明你沒有運行在後臺線程的過程。如果是這樣,解決方案是基本的 - 使用後臺線程。 –

回答

1

您將需要在後臺線程中運行進程。問題是你在同一個線程中同時運行SWT應用程序和abc.exe。會發生什麼,進程是輪流發出請求/響應,並且abc.exe進程沒有響應,因此它正等待 - 如果abc.exe正在執行長時間運行的算法,則會發生同樣的情況。

+0

其他進程總是會獲得自己的線程,但通常會讓父線程等待子子進程完成。 –

0

進程kill實際上是在java中未實現,因爲它是非常危險的