1

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

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();
}

非常感谢!

4

1 回答 1

1

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

于 2010-08-04T21:00:04.517 回答