计时器在下次调用 wp8.1 时变得更快
Timer gets faster on next calls wp8.1
我有一个这样的倒数计时器:
private DispatcherTimer _timer;
private int _countdown;
private void initialize_timer()
{
_countdown = 100;
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromSeconds(1);
_timer.Tick += (s, e) => Tick();
_timer.Start();
}
private void Tick()
{
_countdown--;
if (_countdown == 0)
{
_timer.Stop();
}
TimeSpan time = TimeSpan.FromSeconds(_countdown);
string str = time.ToString(@"dd\:hh\:mm\:ss");
RemainingTime.Text = str;
}
它工作正常,直到我再次调用 initialize_timer()。每次通话时计时器都会变快。请注意,_countdown 将是一个基于未来时间的动态值,因此它会在每次调用时发生变化。
当您调用 initialize_timer()
时,您创建了一个新的 Timer
,但您的旧 Timer
仍然存在并且在滴答作响。只需删除行
_timer = new DispatcherTimer();
_timer.Tick += (s, e) => Tick();
你会没事的。
我有一个这样的倒数计时器:
private DispatcherTimer _timer;
private int _countdown;
private void initialize_timer()
{
_countdown = 100;
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromSeconds(1);
_timer.Tick += (s, e) => Tick();
_timer.Start();
}
private void Tick()
{
_countdown--;
if (_countdown == 0)
{
_timer.Stop();
}
TimeSpan time = TimeSpan.FromSeconds(_countdown);
string str = time.ToString(@"dd\:hh\:mm\:ss");
RemainingTime.Text = str;
}
它工作正常,直到我再次调用 initialize_timer()。每次通话时计时器都会变快。请注意,_countdown 将是一个基于未来时间的动态值,因此它会在每次调用时发生变化。
当您调用 initialize_timer()
时,您创建了一个新的 Timer
,但您的旧 Timer
仍然存在并且在滴答作响。只需删除行
_timer = new DispatcherTimer();
_timer.Tick += (s, e) => Tick();
你会没事的。