【发布时间】:2011-01-28 15:05:31
【问题描述】:
我设置了一个计时器来调用我的应用程序中的事件。问题是事件执行被其他 Windows 操作倾斜。前任。打开和窗口,加载网页。我需要事件每次都准时执行。
当我第一次设置应用程序时,使用声音文件(如节拍器)来听均匀触发,在稳定状态下,它会立即触发,但是一旦在 windows 环境中执行某些操作,声音就会变慢,然后有点加速赶上。
所以我在事件中添加了一个日志记录方法来 ctahc 计时器滴答声。从该数据来看,计时器似乎不受 Windows 应用程序的影响,但我的应用程序事件调用受到影响。我通过检查事件中的 datetime.now 来解决这个问题,如果我将其设置为 250 毫秒,即每秒 4 次点击。你会得到类似下面的数据。
(秒):(毫秒)
1:000 1:250 1:500 1:750
2:000 2:250 2:500 2:750
3:000 3:250 3:500 3:750
(假设我执行了一些 Windows 事件)(时间会倾斜)
4:122 4:388 4:600 4:876
(停止做我在 Windows 中所做的事情) (为了简单起见,我的列表是 30 秒长)
5:124 5:268 5:500 5:750
(你可以让时间回到开始时的毫秒数)
6:000 6:250 6:500 6:750
7:000 7:250 7:500 7:750
所以我认为计时器每次都会继续以相同的毫秒触发,但它的事件被其他 Windows 操作倾斜以触发时间。 这不是一个巨大的偏差,但对于我需要完成的事情,这是不可接受的。
我可以在 .NET 中做些什么,希望使用 XAML/WPF 应用程序,这样可以纠正事件的偏差?
谢谢。
【问题讨论】:
-
再读一遍后看到的东西:你以什么方式写入日志?如果您通过刷新文件访问来执行此操作,则仅磁盘写入就可以在几毫秒内完成。所以你真的应该只记录到内存。
标签: .net events multithreading timer listener