C# 正在尝试更新Dispatcher的间隔,但不总是有效
我想做一个蛇游戏。我想发生的是,每次蛇吃了一块食物,它就会移动得更快 我想通过让计时器加快来实现这一点 我以以下时间间隔启动计时器:C# 正在尝试更新Dispatcher的间隔,但不总是有效,c#,wpf,dispatchertimer,C#,Wpf,Dispatchertimer,我想做一个蛇游戏。我想发生的是,每次蛇吃了一块食物,它就会移动得更快 我想通过让计时器加快来实现这一点 我以以下时间间隔启动计时器: gltimer.Interval = new TimeSpan(20000) 并更新为: public void updateTimer(object sender, EventArgs e) { long nrTicks = gltimer.Interval.Ticks; nrTicks = (long)(nrTicks * 0.95);
gltimer.Interval = new TimeSpan(20000)
并更新为:
public void updateTimer(object sender, EventArgs e)
{
long nrTicks = gltimer.Interval.Ticks;
nrTicks = (long)(nrTicks * 0.95);
gltimer.Interval = new TimeSpan(nrTicks);
}
但是,当我运行我的游戏的速度保持不变,直到我到达第14小吃,然后它突然改变。我已经计算出nrTicks然后下降到10000以下
我的问题是为什么中间值的间隔不更新?Dispatcher的设计不是为了以精确的间隔执行操作 虽然它以精确的间隔分派操作,但分派的操作将在您案例中的GUI线程wpf应用程序循环决定执行时执行 将间隔设置为20.000个刻度将导致间隔为20.000*100ns=2.000.000ns=2ms。wpf应用程序的分辨率最多为10毫秒左右 看看这些帖子: