【发布时间】:2015-04-21 09:09:22
【问题描述】:
我有一个 System.Timers.Timer(即使 Threading.Timer 更强大,我也需要重新启动选项),它应该调用一个事件(函数)进行数据交换。 我的计时器初始化:
private System.Timers.Timer _scheduler; //on class level
_scheduler = new System.Timers.Timer(double.Parse(Config.TimeIntervall));
_scheduler.AutoReset = false;
_scheduler.Elapsed += (o, args) => InterfaceSingleRun();
_scheduler.Start();
函数启动一个任务,在finally语句中我得到了
_scheduler.Start()
重新启动我的计时器,它应该会再次开始倒计时
我的问题:我想防止重叠,因为我不知道任务将运行多长时间(取决于服务器),但 _schedulter.Start() 只是重新启动 Elapsed Event,而不是等待间隔时间。
如果我只是误解了 MSDN-Site/Timer 有一些问题以及如何解决它们/或者我的代码只是搞砸了,请告诉我:)
谢谢
编辑: 感谢 Hans Passant,解决了这个问题。 我正在处理秒数,程序将其解释为毫秒。
【问题讨论】:
-
我的水晶球说
Config.TimeIntervall是秒而不是毫秒。 -
我想要你的水晶球……的确如此。只是现在无法测试它,因为我的代码不起作用..一旦我解决了其他一些小问题,您就会得到答案;)
-
不用麻烦,乘以 1000 就行了。
-
所有冰雹你的水晶球:) 修复了我的代码,乘以 1000,一切都很好.. 正在测试 - 我认为 - 20 秒,即 20 毫秒,看起来像立即重启。如果你给我一些东西来标记为解决方案,我会做的。感谢修复
标签: c# multithreading events timer task