如何保持倒计时计时器滴答作响
本文关键字:滴答 计时器 何保持 倒计时 | 更新日期: 2023-09-27 18:10:19
我正在一个应用程序上工作,我正在使用一个倒计时计时器,我的问题是,每分钟后计时器停止,如果我关闭或打开应用程序再次滴答并在一分钟后停止。计时器的代码是
TimeSpan span2 = TimeSpan.FromSeconds(1);
TimeSpan span;
private void tbkRemaningTime_Loaded(object sender, RoutedEventArgs e)
{
TextBox text = sender as TextBox;
TimeSpan.TryParse(text.Text, out span);
if (span.Seconds > 0)
{
span = span.Subtract(span2);
text.Text = span.ToString();
}
}
private async void tbkRemaningTime_TextChanged(object sender, TextChangedEventArgs e)
{
await System.Threading.Tasks.Task.Delay(1000);
TextBox text = sender as TextBox;
TimeSpan.TryParse(text.Text, out span);
if (span.Seconds > 0)
{
span = span.Subtract(span2);
text.Text = span.ToString();
}
使用System.Threading.Timer:
TimerCallback oneMinuteElapsed = new TimerCallback(TimerHandler);
Timer timer1;
timer1 = new Timer(oneMinuteElapsed, "min1", 0, 1000*60);
private static void TimerHandler(object state)
{
...
}
Ticker timer1每分钟开始oneMinuteElapsed,它调用TimerHandler,你可以把你的代码每分钟执行一次。
Timer的最后一个参数是以毫秒为单位的延迟。在此之前的参数(这里为0)定义何时开始滴答。
时间跨度。Seconds只返回TimeSpan的秒部分——一个从-59到59的值。您可能需要使用TotalSeconds。
现在,这段代码(在两个地方)
if (span.Seconds > 0)
{
span = span.Subtract(span2);
text.Text = span.ToString();
}
将在大约1分钟后停止做任何事情,因为span。秒将为0,即使span表示更长的时间长度。