システムトレイに表示される小さなアプリケーションがあります。
このアプリケーションからコマンドを開始し、別の 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クラスでも破棄します
タスク マネージャーでは、アプリケーション用の 2 つのスレッドとプロセス用の 1 つのスレッドが引き続き表示されます。
プロセス、スレッドを削除すると...アプリケーションが正しく閉じられます
私が入れたら
proc.destroy();
setRunning の後、アプリケーションを閉じてもまったく機能せず、TrayIcon が表示され続ける
何か案が?