我正在使用visual c#wpf应用程序,并希望从我的计时器中充分利用。
我正在使用System.Timers.Timer
,以1ms的间隔调用它(是的,我知道我不能使用VS-wpf获得1ms的计时器)。
我还使用Stopwatch
测量计时器性能,并且大约看到13毫秒。
两个问题:
谢谢!
答案 0 :(得分:1)
回答第一个问题:否
回答(两个问题):
System.Timers.Timer的分辨率与系统时钟相同(请参阅Accurate Windows timer? System.Timers.Timer() is limited to 15 msec),因此使用1毫秒的值创建它是没用的。除此之外,当System.Timers.Timer
时触发事件,事件处理程序通常在ThreadPool
线程上计划。当该事件处理程序实际上执行取决于调度程序和环境。所以你不知道你的事件处理程序将延迟实际触发事件的时间。
在Windows中,可以使用精细分辨率测量时间(参见其他说明)。具有以毫秒分辨率和确定性响应时间间隔精确执行的代码段是不可能的。在我看来,你真的需要一个实时操作系统。