如何停止所有进入SwingWorker.process方法的线程,直到用户在JOptionPane中做出选择?

时间:2014-07-15 17:57:56

标签: java swing swingworker

我有这样的问题。许多SwingWorker正在同时执行。它们都以SwingWorker.process方法处理已发布的数据块。

当第一个线程在SwingWorker.process方法中处理第一个数据块时,我需要停止所有线程。

因为我只需要询问用户如何处理已发现的数据块一次。我需要通知用户找到这样的文件,我需要问他如何处理找到的文件。

现在我的SwingWorker.process方法是:

private static volatile Integer userOption = Integer.MIN_VALUE;

    @Override
        protected void process(final List<Path> chunks) {    
            if (userOption == Integer.MIN_VALUE) {
                // to prevent all other SwingWorkers from doing smth until user makes a choice
                userOption = -100;
                userOption = JOptionPane.showOptionDialog(MainFrame.getInstance().getFrame(),
                        "New viruses where detected!\r\n\r\n Please choose your action:", "Delete or view viruses",
                        JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[] { "Delete viruses",
                                "Show in table" }, "Delete viruses");

            }
            if (userOption == JOptionPane.OK_OPTION)
                VirusManager.deleteViruses(chunks);
    }

我没有显示SwingWorker.doInBackground方法,因为它只遍历系统文件树并在文件后发布文件。

如何停止所有SwingWorker,直到用户在JOptionPane.showOptionDialog中做出选择?

0 个答案:

没有答案