以前の質問 ( Detecting When A Java Application Closes ) に続いて、シャットダウンする前にアプリケーションのリソースをクリーンアップしようとしています。クリーンアップ操作を完全に実行する次のコードを実装しました。
//Intercept when the application closes
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
//Reclaim resources from MIDI usage
if(_midiInstance.CleanUp())
{
Logger.Add("Closed resources successfully on ShutDown");
}
else
{
Logger.Add("Failed to close all resources on ShutDown");
}
System.exit(0);
}
});
System.exit(0); 呼び出しが理解されて処理されると、アプリケーションは引き続き実行されますが、目に見える GUI はありません。System.exit(0) 呼び出しをスレッドのすぐ外側に配置することを考えましたが、それは範囲外であり、実行中の他のスレッドやストリームはありません。
すべてが確実に終了するように ShutDown イベントにフックするときに実行する必要がある追加の手順はありますか?
お時間をいただきありがとうございます。