1

我刚刚了解了执行摇摆后台任务,我开始尝试它,但我在实施时遇到了一点麻烦。我的代码检索图像并返回一个结果(整数),指示图像检索是成功结果 = 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();
4

1 回答 1

2

在 doInBackground 方法完成之前, done 方法不会执行。所以这里肯定有其他事情发生。我猜你可能会调用 done 和 doInBackground 而不是 run()?如果没有,请尝试通过创建 SSCCE 来查找问题。

于 2011-02-09T13:32:11.560 回答