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

WPF计时器问题。。。无法获得正确的毫秒刻度,wpf,timer,Wpf,Timer,我有一个关于计时器的基本问题。我的计时器动作很奇怪。我试图让滴答声每毫秒出现一次,以更新我的数据。我可以让它在几秒钟内工作,但不是几毫秒 我正在使用WPF,我想知道为什么下面的功能不正常 “第二次”倒计时似乎工作正常,但在使用相同的程序和编辑一个值时,它似乎没有正确地“勾选” 我尝试使用以下方法进行毫秒倒计时: //TimeSpan temp0 = new TimeSpan(0, 0, 0, 0, 1); CountdownTimer = new Disp

我有一个关于计时器的基本问题。我的计时器动作很奇怪。我试图让滴答声每毫秒出现一次,以更新我的数据。我可以让它在几秒钟内工作,但不是几毫秒

我正在使用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;
            //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;
上面的内容似乎适用于“秒”倒计时,但我需要更高的精度,因此我执行以下操作:

            //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;
            //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;
这将给我们毫秒精度,但是,当我在我的程序中尝试这一点时,速度要慢得多。你知道为什么吗

    void Countdowntimer_Tick(object sender, EventArgs e)
    {
        m_dIntroCountdown -= 1.0;
    }
ps:我确实相应地设置了“m_dintro倒计时”。如果我们以毫秒为单位,我将其设置为5000.0,如果以秒为单位,则设置为5.0

也许我对这件事看得太多了,有什么想法吗

感谢所有的帮助


谢谢!

您想要分辨率做什么?如果您只是想记录时间,请使用。它的分辨率为~10ns


1毫秒的时间分辨率对于WPF来说太精细了。即使是120 fps(这是很高的),分辨率仅为8.3毫秒。为了以1毫秒的速度更新,需要每秒渲染1000帧。这超出了任何现代系统的限制。即使是人眼也会在10毫秒左右开始失去运动中不连续变化的轨迹。

Dispatchermer不是一个高精度计时器-它是一个低精度低精度计时器套件用于UI工作的ble(人们不会注意到100毫秒的延迟)

每1ms执行一次代码的高精度计时器很难实现,甚至不可能实现(如果系统中的其他进程使用100%CPU,而您的进程运行时间不超过1ms,您该怎么办?如果此时执行的代码必须从页面文件重新加载,并且需要1ms以上,您该怎么办?).

这是C的代码:

以下是如何做到这一点:

添加3个标签和1个按钮:
Label1
Label2
Label3
Button1

这是Vb(Visual Basic)的代码:


不,我不是想以每秒1000帧的速度更新WPF:)我是想提供一个高精度的计时器。至于秒表信息,太棒了。谢谢。