C# 如何保持倒计时计时计时

C# 如何保持倒计时计时计时,c#,xaml,windows-phone-8,timer,C#,Xaml,Windows Phone 8,Timer,我正在开发一个应用程序,如果我使用的是倒计时,我的问题是,每分钟计时器都会停止,如果我再次关闭或打开应用程序,它会再次滴答作响,并在一分钟后停止。计时器的代码为 TimeSpan span2 = TimeSpan.FromSeconds(1); TimeSpan span; private void tbkRemaningTime_Loaded(object sender, RoutedEventArgs e) { TextBox text = send

我正在开发一个应用程序,如果我使用的是倒计时,我的问题是,每分钟计时器都会停止,如果我再次关闭或打开应用程序,它会再次滴答作响,并在一分钟后停止。计时器的代码为

 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每分钟启动一分钟,这会调用计时器句柄,您可以将每分钟执行的代码放入其中

计时器的最后一个参数是延迟(毫秒)。
在此之前的参数0定义何时开始滴答声。

TimeSpan.Seconds仅返回TimeSpan的秒数部分-从-59到59的值。您可能想改用TotalSeconds

瞧,这个代码在两个地方

if (span.Seconds > 0)
{
    span = span.Subtract(span2);
    text.Text = span.ToString();
}

将在大约1分钟后停止执行任何操作,因为span.Seconds将为0,即使span代表更长的时间长度。

能否为计时器提供匹配的“滴答”事件?我的另一个问题是计时器启动时,如果我从计时器页面导航到另一个页面并在返回windows phone中的计时器页面时自行恢复,计时器将停止。如何解决此问题..我不知道windows phone,但在Web应用程序中有一个名为global.asax的页面,您可以在其中放置与加载的站点无关的代码。您的windows phone应用程序中是否有任何应用程序启动方法?这可能是计时器的正确位置。参数min1,它代表什么我不明白我尝试了,但不起作用。我的代码是正确的,但在页面导航中失败。如果可以用另一种方法解决,并且windows phone应用程序不包含任何应用程序启动方法,请帮助我。min1只是一个字符串。在这里,它没有任何意义。我认为它就在那里,因此您可以将有关计时器的信息传递给处理程序。