C# 调度程序中的延迟倒计时

C# 调度程序中的延迟倒计时,c#,windows-phone-8,C#,Windows Phone 8,我有一个应用程序,它使用Dispatchermer来管理时间、倒计时等事情。当应用程序打开时,我确实打开了多个计数器。但是时间有点延迟,我想大约每分钟3-5秒。这是我正在使用的代码的一部分: DispatcherTimer ob = new DispatcherTimer(); ob.Interval = new TimeSpan(0, 0, 1); private void bob_Click(object sender, RoutedEventArgs e) //Button starti

我有一个应用程序,它使用Dispatchermer来管理时间、倒计时等事情。当应用程序打开时,我确实打开了多个计数器。但是时间有点延迟,我想大约每分钟3-5秒。这是我正在使用的代码的一部分:

DispatcherTimer ob = new DispatcherTimer();
ob.Interval = new TimeSpan(0, 0, 1);

private void bob_Click(object sender, RoutedEventArgs e) //Button starting countdown
    {
        ob.Start();
        tikOb = 140;
        ob.Tick += new EventHandler(ob_Tick);
    }

void ob_Tick(object sender, EventArgs e)
    {
        tob.Text = tikOb.ToString();

        if (tikOb > 0)
        {
            tikOb--;
        }

        else
        {
            ob.Stop();
            tob.Text = "STOPPED";
            ob.Tick -= new EventHandler(ob_Tick);
        }



//Between these there is a code which is irrelevant in this case.

private void stopob_Click(object sender, RoutedEventArgs e) //Button breaking countdown
    {
        ob.Tick -= new EventHandler(ob_Tick);
        ob.Stop();
        tob.Text = "ON";
    {

谁能告诉我为什么会这样?我在代码里有没有做错什么?哦,我在代码中还有另外一个,它使用不同的变量等等。它是完全分开的。提前谢谢

调度程序在UI线程上执行。如果UI线程当前忙于执行其他工作的时间超过了该时间间隔,它将延迟计时器事件的执行,并在之前的工作结束后调用它。如果您需要更精确的调度,则应该比在后台运行更长的时间,如System.Threading.Timer或Task.Delay,如果您使用的是.NET 4.5及更高版本,则可以等待这些时间。如果使用计时器,然后调用UI线程逻辑,则必须记住将工作封送回UI线程