Я только что узнал о выполнении свинг-фоновых задач и начинаю экспериментировать с ним, но у меня возникли небольшие проблемы с реализацией. Мой код извлекает изображение и возвращает результат (целое число), который указывает, был ли поиск изображения успешным результатом = 0 или неудачным результатом = -1. Вот моя проблема, я получаю результат слишком рано. Я могу видеть операторы в методе createImage в коде ниже, выполняющемся после того, как результат прочитан в методе done (). Я думаю, я думал, что готовый метод не будет выполняться, пока не будет создан createImage. Вот мой код ниже:
new SwingWorker<int[], Void>() {
int result = -1;
@Override
protected int[] doInBackground() throws Exception {
// TODO Auto-generated method stub
return createImage(); //returns an integer array of size one indicating the result
}
protected void done() {
try {
result = get()[0]; //this result is being read before createImage is done
//executing. Why?
thisApplet.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
tree.setEnabled(true);
if (result == -1){
tree.setSelectionPath(null);
return;
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}.execute();