これは、より大きなグラフ作成プログラム (具体的には JavaPlot) の一部です。一言で言えば、私は何かをグラフ化しようとします。グラフは
out.write(comms);
しかし、ヒットすると閉じます
out.close()
OutputStreamWriter を閉じる必要があることはわかっているので、その行を削除する代わりに、ユーザーが「Q」を押すまで待機する Scanner を作成しました。その後、プログラムは通常どおり続行し、グラフ、OutputStreamWriter、および Scanner を閉じます。
OutputStreamWriter out = new OutputStreamWriter(proc.getOutputStream());
out.write(comms);
out.flush();
//added from here
//waiting until input is given
Scanner timeKiller = new Scanner(System.in);
String check = timeKiller.nextLine();
if(check != "q"){
check = timeKiller.nextLine(); //<---waiting here.
}
timeKiller.close();
//to here
out.close();
私がしていることは危険ですか?誰かがウィンドウを閉じてグラフを閉じても、プログラムは強制終了されませんよね? これによってメモリ リークが発生することはありませんが (そうですか?)、プロセスがまだ実行中で、このプログラムを数回実行すると、最終的に問題が発生し始めます。どうすればこれを修正できますか? 頭のてっぺんから、ウィンドウが閉じている場合にループを壊すリスナーをウィンドウに追加することはできますか? それとも私が間違っていて、これはまったく問題ではありませんか?