我刚刚了解了执行摇摆后台任务,我开始尝试它,但我在实施时遇到了一点麻烦。我的代码检索图像并返回一个结果(整数),指示图像检索是成功结果 = 0 还是不成功结果 = -1。这是我的问题,我太快检索结果。在 done() 方法中读取结果后,我可以在下面的代码中看到 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();