Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在System.exit(0)被称为-Java之后,应用程序继续运行_Java_Events_Netbeans_Shutdown Hook - Fatal编程技术网

在System.exit(0)被称为-Java之后,应用程序继续运行

在System.exit(0)被称为-Java之后,应用程序继续运行,java,events,netbeans,shutdown-hook,Java,Events,Netbeans,Shutdown Hook,我试图在我的应用程序关闭之前清理它中的资源,根据我前面的问题()我已经实现了下面的代码,它完美地执行了清理操作 //Intercept when the application closes Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() {

我试图在我的应用程序关闭之前清理它中的资源,根据我前面的问题()我已经实现了下面的代码,它完美地执行了清理操作

//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);
                }
            });
虽然系统退出(0);调用被理解和处理,应用程序继续运行,只是没有一个可访问的GUI。我曾经考虑过将System.exit(0)调用放在线程之外,但是它超出了范围,没有任何其他线程或流在运行

在连接到关机事件时,是否需要采取额外的步骤来确保一切都已关闭


谢谢您的时间,我非常感谢。

在阅读了您的其他问题后,您可能没有访问您的窗口。如果是真的,这将解释问题的原因。

在阅读了其他问题后,您可能没有打开窗口。如果为真,这将解释问题的原因。

您需要超越windows关闭按钮:

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

通过这样做,程序将关闭,而不仅仅是变得不可见

您需要越过车窗关闭按钮:

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

通过这样做,程序将关闭,而不仅仅是变得不可见

应用程序中的所有线程是否正确处理被中断?应用程序中没有其他线程,只有挂接到关机事件时声明的线程。应用程序中的所有线程是否正确处理被中断?应用程序中没有其他线程,唯一的线程是挂接到关机事件时声明的线程。在调用System.exit(0)之前是否调用Dispose()?您可以调用它而不是调用System.exit(0)。应用程序将自然退出。@JVerstry我已经尝试过这个。dispose();但这是一个“找不到”的符号错误。我正在使用扩展FrameView的SwingUI应用程序,我使用向导创建项目,它为我提供了表单。不,您应该尝试类似于e.getWindow().dispose()的方法,其中e是windowClosing处理程序接收的WindowEvent。上面的代码示例显示我无法访问WindowsEvent,我是否应该使用@John Reasor的答案重新实现它并以这种方式执行?我是否应该在调用System.exit(0)之前调用Dispose()?您可以调用它而不是调用System.exit(0)。应用程序将自然退出。@JVerstry我已经尝试过这个。dispose();但这是一个“找不到”的符号错误。我正在使用扩展FrameView的SwingUI应用程序,我使用向导创建项目,它为我提供了表单。不,您应该尝试类似于e.getWindow().dispose()的方法,其中e是windowClosing处理程序接收的WindowEvent。上面的代码示例显示我无法访问WindowsEvent,我是否应该使用@johnreasor的答案重新实现它,并这样做?是的,但是如果在其他线程上执行工作,那么这是一种苛刻的方法。我同意dispose()是比System.exit(0)更好的选择;我确实指出了windowsClosingYes的覆盖,但如果在其他线程上执行工作,则这是一种苛刻的方法。我同意dispose()是比System.exit(0)更好的选择;我真的指出了窗口关闭的覆盖