我有我已经使用了多年,其代码和今天早上我发现属性更改时任务完成后不会被调用。 我已经得到了摇摆工人设置为一个内部类,我把一个破发点上的字符串properyName = EVT .....它从不打破发点。
void loadData() {
work2 = new bkgdLoadData();
work2.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if( propertyName.equals("state")) {
SwingWorker.StateValue state = (SwingWorker.StateValue) evt.getNewValue();
if( state == SwingWorker.StateValue.DONE) {
work2 = null;
}
}
}
});
work2.execute();
}
你可以看到,我设置对象WORK2当任务完成后为空,现在它不再被设置为null。 在课堂上,我增加了一个完成例程当doinbackground完成它击中。 更令人不解的是我为什么属性更改侦听器不会被触发。 一定有什么我没有注意到改变。
protected class bkgdLoadData extends SwingWorker<Integer, Object> {
@Override
protected Integer doInBackground() {
switch(bkgdMode) {
case 0:
doRead();
break;
case 1:
doWrite();
break;
case 2:
runRobot();
break;
}
return 0;
}
@Override
protected void done() {
int i=0;
i++;
}
}
在完成的断点击中,但没有财产变更通知交付。 (我把做程序,以核实该摆动工人知道它是做的唯一目的。)
我看了看文件,我没有看到,我必须手动断火某种性质变化的,所以我真的很坚持,并希望另一双眼睛,告诉我,我误以为是什么愚蠢的错误。
谢谢,宜兰