C# 在下一次调用wp8.1时,计时器变得更快
我有这样一个倒计时器:C# 在下一次调用wp8.1时,计时器变得更快,c#,timer,windows-phone-8.1,countdown,C#,Timer,Windows Phone 8.1,Countdown,我有这样一个倒计时器: private DispatcherTimer _timer; private int _countdown; private void initialize_timer() { _countdown = 100; _timer = new DispatcherTimer(); _timer.Interval = TimeSpan.FromSeconds(1); _timer.Tic
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()之前,它工作正常。每次通话计时器都会变快。请注意,“倒计时”将是一个基于未来时间的动态值,因此它将在每次调用时更改。当您调用
初始化\u timer()
时,您将创建一个新的计时器,但旧的计时器仍在那里并在滴答作响。只要把线移开就行了
_timer = new DispatcherTimer();
_timer.Tick += (s, e) => Tick();
你会没事的。计时器会变快
或者你会得到很多滴答声()
包括旧的?我不知道。我看到所有的秒,但变化更快。当我删除它时,计时器变为null,Crassesi认为他的意思是if(_timer==null)\u timer=new DispatchTimer()代码>,将其初始化一次;但是还需要做更多的更改。@Petesh谢谢,你说得对,实际上initialize\u计时器
预计只运行一次。顺便说一句,我编辑了答案以反映您的评论。我将代码更改为:if(_timer==null){u timer=newdispatchermer();_timer.Tick+=(s,e)=>Tick();}