我使用timers.timer每隔5秒发一次事件。我注意到的是经过一段时间它每6秒开火一次。还有许多其他线程并行运行。 timers.timer事件将使用threadpool生成。漂移是因为运行paralley的其他线程。那是对的吗?我的应用程序是wpf应用程序。我不能使用调度程序计时器,因为它可能会影响UI。
我想每隔5秒触发一次计时器事件,而不会影响其他线程并且不会影响UI。什么是解决方案/最佳方法。
答案 0 :(得分:1)
我不确定为什么会发生这种情况但是timer.timer并不是为了这个目的。如果您要在不同的线程上同时运行许多计时器,请考虑使用System.Threading.Timer。
System.Threading.Timer是一个简单,轻量级的计时器,它使用回调方法并由线程池线程提供服务。不建议将其与Windows窗体一起使用,因为它的回调不会发生在用户界面线程上。 System.Windows.Forms.Timer是与Windows窗体一起使用的更好选择。对于基于服务器的计时器功能,您可以考虑使用System.Timers.Timer,它会引发事件并具有其他功能。 看看
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx