Могу ли я запустить один SwingWorker внутри другого? - PullRequest
1 голос
/ 04 августа 2010

Мне нужно запустить два 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 Ответ

1 голос
/ 05 августа 2010

Вы можете сделать это таким образом, и это будет работать.Однако, если в вашем внешнем done нет других операций, которые вы не показываете, вам, вероятно, будет лучше с тем, что выполнило обе операции в doInBackground и вернуло массив результатов.

...