我的GWT应用程序有2个计时器。两者都在重复计时器。 我开始运行Timer1,经过一段时间后,我在其run()方法中取消了定时器,并为Timer2做了scheduleReapeating。 Timer1的取消发生,但Timer2没有运行。 我尝试直接运行Timer2,它确实运行了。所以Timer2的代码没有任何问题。只有当它从定时器1中运行时它才会运行。我们不能不按计划安排定时器吗?
Timer timer1 = new Timer() {
@Override
public void run {
//Some processing
//...
//..
if(some_condition) {
cancel();
timer2.scheduleRepeating(100);
}
}
};
Timer2 timer 2 = new Timer() {
@Override
public void run() {
//some processing
//....
//....
}
};
}
答案 0 :(得分:0)
我刚刚运行了这个测试代码,它按预期工作。它会根据您单击的单选按钮切换哪个计时器运行:
public class TestProj implements EntryPoint {
//some timers
Timer timer2, timer1;
//buttons to operate timers
RadioButton b1 = new RadioButton("group", "Timer 1"),
b2 = new RadioButton("group", "Timer 2");
//output panel
VerticalPanel output = new VerticalPanel();
public void onModuleLoad() {
RootPanel.get().add(b1);
RootPanel.get().add(b2);
RootPanel.get().add(output);
timer1 = new Timer() {
@Override
public void run() {
output.add(new Label("Timer 1 ran"));
if (b2.getValue()) {
cancel();
timer2.scheduleRepeating(1000);
}
}
};
timer2 = new Timer() {
@Override
public void run() {
output.add(new Label("Timer 2 ran"));
if (b1.getValue()) {
cancel();
timer1.scheduleRepeating(1000);
}
}
};
//initial start of timer1
timer1.scheduleRepeating(1000);
}
}
答案 1 :(得分:0)
您输入的代码不是正确的代码,虽然帮助很难给出。 但是你把代码放进去的方式,它应该是一种魅力。