WPF计时器问题...无法获得正确的毫秒刻度

Kyl*_*yle 2 wpf timer

我有一个关于计时器的基本问题.我的计时器表现得很奇怪.我试图让每毫秒发生一次滴答来更新我的数据.我似乎可以用秒来工作,但不是毫秒......

我正在使用WPF,我想知道为什么以下功能不正常.

看起来"第二次"倒计时工作正常,但是在使用相同的程序并编辑一个值时,它似乎没有正确"勾选".

我正在尝试使用以下内容进行毫秒倒计时:

            //TimeSpan temp0 = new TimeSpan(0, 0, 0, 0, 1);
        CountdownTimer = new DispatcherTimer();
        CountdownTimer.Tick += new EventHandler(Countdowntimer_Tick);
        CountdownTimer.Interval = TimeSpan.FromSeconds(1.0);//temp0;
Run Code Online (Sandbox Code Playgroud)

上面看起来它适用于"第二次"倒计时,但我需要更高的精度,所以我做以下事情:

            //TimeSpan temp0 = new TimeSpan(0, 0, 0, 0, 1);
        IntroCountdownTimer = new DispatcherTimer();
        IntroCountdownTimer.Tick += new EventHandler(Countdowntimer_Tick);
        IntroCountdownTimer.Interval = TimeSpan.FromSeconds(0.001);//temp0;
Run Code Online (Sandbox Code Playgroud)

这会给我们毫秒级的精度,但是,当我在我的程序中尝试这个时,它要慢得多.有什么想法吗?

    void Countdowntimer_Tick(object sender, EventArgs e)
    {
        m_dIntroCountdown -= 1.0;
    }
Run Code Online (Sandbox Code Playgroud)

ps:我相应地设置了"m_dIntroCountdown.如果我们以毫秒为单位,我将其设置为5000.0,如果以秒为单位,5.0

也许我对这个看起来太过分了......任何想法?

所有帮助表示赞赏.

谢谢!

cod*_*zen 6

对于WPF可以处理的内容,1 ms的时间分辨率太精细了.即使在120 fps(高)下,您也只能获得8.3 ms的分辨率.要以1ms更新,您需要每秒渲染1000帧.这超出了任何现代系统的限制.甚至人眼也开始在约10ms处失去运动的不连续变化.

你想要什么决议?如果您只是想跟踪时间,请使用System.Diagnostics.Stopwatch.它的分辨率约为10ns.