c# - 使定时器间隔更准确
问题描述
我想让我的 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
必须有办法做到这一点..有什么想法吗?
谢谢!
解决方案
推荐阅读
- ios - Swift 4 - 如何构造一个 json 对象并在 switch 中使用可解码(不工作)
- git - 我如何 git checkout 多个 pr
- sccm - SCCM 2012 OSD 任务序列 - 使用服务标签重命名计算机
- java - 快速排序对象java
- node.js - ReferenceError:nodejs中未定义窗口
- javascript - Object.create() 方法是执行浅拷贝吗?
- python - 附加到字典
- angular - Updating data without passing id param in URL
- python - Python输出方法
- c++ - DirectShow:为 YV12 渲染