我有一个显示在系统托盘中的小应用程序。
从这个应用程序我启动一个命令,我运行另一个 java 程序,我得到它 inputStream 并将它显示在一个 textArea 中。
final Process process = Runtime.getRuntime().exec( runCommand );
input = new LoggingThread( process.getInputStream() );
error = new LoggingThread( process.getErrorStream() );
input.start();
error.start();
In loggingThread
public void run()
{
while ( running )
{
try
{
BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
String line = "";
try
{
while ( ( line = reader.readLine() ) != null && running )
{
JTextAreaAppender.getTextArea().append( line );
JTextAreaAppender.getTextArea().append( System.getProperty( "line.separator" ) );
}
}
finally
{
reader.close();
}
}
catch ( IOException ioe )
{
ioe.printStackTrace();
}
}
}
当我退出应用程序时
input.setRunning(false);
error.setRunning(false);
我也处理 TrayIcon 类
在任务管理器中,我继续看到两个线程用于应用程序,一个用于进程
如果我删除进程,线程...应用程序正确关闭
如果我把
proc.destroy();
setRunning 后,关闭应用程序完全不起作用,TrayIcon 继续显示
任何想法?