Приложение продолжает работать после вызова System.exit (0) - Java - PullRequest
1 голос
/ 20 апреля 2011

Я пытаюсь очистить ресурсы в своем приложении, прежде чем оно закроется, в соответствии с моим предыдущим вопросом ( Обнаружение закрытия приложения Java ) Я реализовал следующий код, который выполняет операцию очисткиотлично.

//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);вызов понимается и обрабатывается, приложение продолжает работать, просто без видимого графического интерфейса.Я думал о том, чтобы разместить вызов System.exit (0) только вне Thread, но тогда он выходит из области видимости, другие потоки или потоки не выполняются.

Есть ли еще какой-то дополнительный шаг, который я должен предпринять при подключении к событию ShutDown, чтобы убедиться, что все закрывается?

Спасибо за ваше время, я очень признателен.

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

После прочтения вашего другого вопроса кажется, что вы, вероятно, не вызываете dispose () в своих окнах. Если это правда, это объяснит причину вашей проблемы.

1 голос
/ 20 апреля 2011

Вам нужно перезапустить кнопку закрытия окон:

            //overriding the windowClosing() method will allow the user to click the close button
    addWindowListener(
            new WindowAdapter()
    {
        public void windowClosing(WindowEvent e)
        {
            System.exit(0);
        }
    });

При этом программа закроется, а не станет невидимой.

...