[英]How To keep the Countdown timer ticking
我正在使用一個倒數計時器在開發一個應用程序,我的問題是計時器每分鍾都會停止,如果我再次關閉或打開該應用程序,它將再次滴答並在一分鍾后停止。 計時器的代碼是
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)
{
...
}
股票行情計時器1每分鍾啟動oneMinuteElapsed,並調用TimerHandler,您可以在其中放置應每分鍾執行的代碼。
Timer的最后一個參數是以毫秒為單位的延遲。 之前的參數(此處為0)定義何時開始計時。
TimeSpan.Seconds僅返回TimeSpan的秒部分-介於-59到59之間的值。您可能想使用TotalSeconds。
IOW,此代碼(在兩個地方)
if (span.Seconds > 0)
{
span = span.Subtract(span2);
text.Text = span.ToString();
}
1分鍾后將停止執行任何操作,因為span.Seconds將為0,即使span表示更長的時間長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.