我可以在另一个内部运行一个SwingWorker吗?

时间:2010-08-04 19:41:11

标签: java swing swingworker

我需要运行两个SwingWorker。其中一个只能在另一个完成后运行。我可以像这样运行它们吗?

class TestWorker {
    private FirstWorker worker1;
    private SecondWorker worker2;

    public TestWorker() {
        worker1 = new FirstWorker() {
            @Override
            protected void done() {
                try {
                    result1 = get();
                } catch (Exception) {
                    // exception handling
                }

                worker2 = new SecondWorker() {
                    @Override
                    protected void done() {
                        try {
                            result2 = get();
                        } catch (Exception) {
                            // exception handling
                        }
                    }
                }

                worker2.execute();
            }
        }

        worker1.execute();
    }
}

我应该如何取消它们?喜欢这个?

private cancel() {
    if (worker2 != null) work2.cancel();
    if (worker1 != null) work1.cancel();
}

非常感谢!

1 个答案:

答案 0 :(得分:1)

你可以这样做,它会起作用。但是,除非您的外部done中有其他操作未显示,否则您可能会更好地处理doInBackground中的两个操作并返回结果数组。