如果有东西在运行,则没有退出选项

时间:2011-01-11 17:40:45

标签: java

如果用户从菜单中选择退出选项,我怎么能抓住一些事情呢? 我的意思是我希望能够管理将要关闭应用程序的用户的事件 但是有些活动正在进行,所以他/她不应该退出。

这是我写的代码。 简而言之:

  • 正在执行录制 - >用户点击退出 - >警告“流程正在运行,您无法执行此操作”(流程继续进行)

  • 一切都在运行 - >用户点击退出 - >申请结束

是否可以通过添加几行代码来解决问题,而无需重写 整个计划?

非常感谢提前 MAX

exitAction = new AbstractAction("Exit") {

            public void actionPerformed(ActionEvent e) {

                System.exit(0);
            }
        };
        exitAction.putValue(Action.NAME, "Exit");
        // description 
        exitAction.putValue(Action.SHORT_DESCRIPTION, "Exit application");

4 个答案:

答案 0 :(得分:0)

您需要跟踪您的工作,以便干净地完成这项工作。如果你不能,你可以尝试迭代到所有的jvm线程,并查看你的一些工作线程是否处于可执行状态。

请记住,如果用户愿意,用户可以使用大任务管理器斧头杀死应用程序:)。

答案 1 :(得分:0)

如果通过'running'表示未完成的线程,那么您可以循环已启动的所有线程并调用.join()。在此之前显示一条消息'等待所有线程完成。你想强行关闭'

答案 2 :(得分:0)

你可以使用一个变量,一个小标志,在你要检查的过程开始时将它设置为true,当它结束时将其设置为false。

然后在结束事件中,您可以检查该变量是真还是假。

答案 3 :(得分:0)

如果你没有在你的应用程序中使用线程(我假设你是,但是为了清楚起见而覆盖它),那么,当你退出应用程序时,事件调度线程(EDT)将关闭所有内容你。

否则,正确管理和跟踪系统中的线程非常重要,这样您就可以在关闭系统之前结束它们。有很多方法可以做到这一点(请不要使用stop()并尽量避免destroy())。我的建议是,在你的线程中,花点时间检查它们是否应该关闭(系统在关闭时设置的标志就是这种可能性)。这样,您可以清理线程,保存任何数据(保存到文件或其他任何内容,如果这是您需要做的事情),然后干净地关闭。