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