我有这样的代码:
这是一个相当大的应用程序的一小部分。在其他时候,应用程序中使用 System.Timers.Timer 会出现相同的行为。我在特定计时器的控制台输出中添加了线程 ID,以便希望获得有关为什么正确的一秒事件之间会有随机的17.5秒经过时间的更深入的见解。
我是否明显做错了什么?也许有一些更多的数据我可以收集,以弄清我的计时器为什么这样操作?
任何建议都将不胜感激。
我有这样的代码
mTestModeMetadataTimer = new System.Threading.Timer(SomeTimerCallback, null, 1000, Timeout.Infinite);
Stopwatch tmStopwatch = new Stopwatch();
private void SomeTimerCallback(object state)
{
// doing minimal work here
Console.WriteLine("{0}: SomeTimerCallback time: {1}", System.Threading.Thread.CurrentThread.ManagedThreadId, tmStopwatch.ElapsedMilliseconds);
tmStopwatch.Restart();
// Better to be on the safe side and do this slightly more than once per second, than slightly less.
mTestModeMetadataTimer.Change(990, Timeout.Infinite);
}
除了偶尔会出现巨大的延迟之外,一切正常。如下控制台输出所示。
31: SomeTimerCallback time: 998
21: SomeTimerCallback time: 997
20: SomeTimerCallback time: 999
3: SomeTimerCallback time: 989
3: SomeTimerCallback time: 1000
3: SomeTimerCallback time: 994
37: SomeTimerCallback time: 999
3: SomeTimerCallback time: 991
29: SomeTimerCallback time: 1002
37: SomeTimerCallback time: 1000
3: SomeTimerCallback time: 17568
3: SomeTimerCallback time: 999
29: SomeTimerCallback time: 993
这是一个相当大的应用程序的一小部分。在其他时候,应用程序中使用 System.Timers.Timer 会出现相同的行为。我在特定计时器的控制台输出中添加了线程 ID,以便希望获得有关为什么正确的一秒事件之间会有随机的17.5秒经过时间的更深入的见解。
我是否明显做错了什么?也许有一些更多的数据我可以收集,以弄清我的计时器为什么这样操作?
任何建议都将不胜感激。