日期:2014-05-20  浏览次数:20687 次

定时器刷新问题,求帮助
private class UpdateTask extends TimerTask {
String id;

Timer myTimer = new Timer();

public UpdateTask(String id) {
this.id = id;
}

public void run() {
parent.getDisplay().asyncExec(new Runnable() {
public void run() {
UICallBack.deactivate(id);
updateData();
}
});
}

public void doScedule(int delay, int internal) {
myTimer.schedule(new UpdateTask(id), delay, internal);
}

public void end() {
myTimer.cancel();
}
}这是一个定时器,我想在

combo = new Combo(toolbar, SWT.NONE);
combo.setText("10秒");
combo.add("10秒");
combo.add("30秒");
combo.add("60秒");
combo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String ss = combo.getText().substring(0, 2);
time = Integer.valueOf(ss) * 1000;
updateTask.doScedule(0, time);
}
});这个监听调用它,达到10秒一刷新,30秒1刷新,60秒一刷新的三种实现,为什么他还是只按照10秒1刷新呢我默认int time=10000;就是默认10秒一刷新,求解答在线等,另外public void run() {
parent.getDisplay().asyncExec(new Runnable() {
public void run() {
UICallBack.deactivate(id);
updateData();
}
});
}

这个什么意思?

------解决方案--------------------
String ss = combo.getText().substring(0, 2);
你把这个ss打出来看看是不是正确的获取到了
------解决方案--------------------
先updateTask.end()
再updateTask.doScedule(0, time);
试试