windows手机中的计时器

本文关键字:计时器 手机 windows | 更新日期: 2023-09-27 18:24:56

我在windows phone 中有这样的代码

private void btnrun_Click(object sender, RoutedEventArgs e)
{
    t = 0;
    Start_timer();
}
public void Start_timer()
{
    timer2 = new DispatcherTimer();
    timer2.Tick += timer_Tick2;
    timer2.Interval = new TimeSpan(0, 0, 0, 0, 1000);
    timer2.Start();
}
void timer_Tick2(object sender, object e)
{
    t++;
    txttime.Text = t.ToString();
}

第一次使用时,显示从1、2、3、4。。。但当你再次点击时,它会从2、4、6开始。。。。再次点击,显示3、6。。。有没有一种方法可以让它在每次失败时点击按钮1、2、3、4来运行您的显示器?感谢

windows手机中的计时器

试试这样的东西:

private void btnrun_Click(object sender, RoutedEventArgs e)
{
    t = 0;
    Start_timer();
}
public void Start_timer()
{
    if (timer2 != null)
    {
        timer2 -= timer_Tick2; // unassigns the event handler
        timer2.Stop(); // stops the timer
    }
    timer2 = new DispatcherTimer();
    timer2.Tick += timer_Tick2;
    timer2.Interval = new TimeSpan(0, 0, 0, 0, 1000);
    timer2.Start();
}
void timer_Tick2(object sender, object e)
{
    t++;
    txttime.Text = t.ToString();
}

编辑:如果你只想启动一次计时器,它可以减少为:

private void btnrun_Click(object sender, RoutedEventArgs e)
{
    t = 0;
    if (timer2 == null)
        Start_timer();
}
public void Start_timer()
{
    timer2 = new DispatcherTimer();
    timer2.Tick += timer_Tick2;
    timer2.Interval = new TimeSpan(0, 0, 0, 0, 1000);
    timer2.Start();
}
void timer_Tick2(object sender, object e)
{
    t++;
    txttime.Text = t.ToString();
}

在再次运行计时器之前,每次单击都使用Stop()方法停止计时器。

private void btnrun_Click(object sender, RoutedEventArgs e)
        {
            t = 0;
            timer2.Stop();
            Start_timer();
        }

每个定时器在同一个Tick回调上注册:

timer2.Tick += timer_Tick2;

所以这就是问题的原因。