簡體   English   中英

如何保持倒數計時器計時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM