首页 > 解决方案 > 使定时器间隔更准确

问题描述

我想让我的 UI 每 30 毫秒更新一次,所以我有一些图像动画,同时正在处理一些异步任务。

无论我做什么或使用哪个计时器(System.Threading.Timer 或 System.Windows.Forms.Timer),当事情变得忙碌时,我的计时器最频繁更新大约是 1 秒。我知道 Windows 不是一个实时操作系统,所以我无法在 30 毫秒内完美地得到它,但必须有某种方法让这个计时器功能具有更高的优先级并更频繁地触发!

static DateTime s_mLastTick = DateTime.Now;

mAnimationTimer = new System.Threading.Timer((state) =>
{
    DateTime now = DateTime.Now;
    Debug.WriteLine("MS since that run: " + now.Subtract(s_mLastTick).TotalMilliseconds);
                s_mLastTick = now;

    this.InvokeIfRequired(() =>
    {
        AnimateImages();
    });
}, null, 0, 30); // doesn't matter what I set this 30 to, the best log output I can get is ~1000 ms during intense computation

必须有办法做到这一点..有什么想法吗?

谢谢!

标签: c#multithreadingwinforms

解决方案


推荐阅读