我想问一个System.Timers.Timer
实例是在单线程,线程池还是其他的地方运行?.NET - System.Timers.Timer问题
如果它在单个线程上运行,你认为什么是最适合这个例子:
- 我想每分钟更新所有人物的健康
- 我要更新所有人物的能量每2秒
- 我要更新所有人物的特价每40秒
我应该运行它们每一个单独的线程,在一个单独的事件运行它们,或运行所有这些我的ñ单线程必须检查时差?
我想问一个System.Timers.Timer
实例是在单线程,线程池还是其他的地方运行?.NET - System.Timers.Timer问题
如果它在单个线程上运行,你认为什么是最适合这个例子:
我应该运行它们每一个单独的线程,在一个单独的事件运行它们,或运行所有这些我的ñ单线程必须检查时差?
System.Timers.Timer已用事件使用线程池。因此,如果间隔较小(并且已过去的事件>间隔需要很长时间才能完成),则可以调用多个线程。线程池在后台运行,UI更新不能在Windows应用程序的UI线程之外完成。但是,您可以使用Control.InvokeControl.BeginInvoke
从http://msdn.microsoft.com/en-us/library/system.timers.aspx:
基于服务器的定时器是专为 在 多线程环境中工作线程使用。服务器 定时器可以在线程间移动到 处理提升的Elapsed事件, 导致比 更高的准确性提高 事件的时间。
我会从单个计时线程运行所有操作并计算时差。这样我就可以在没有实例化更多定时器的情况下运行尽可能多的操作。
同步发生在相同时间间隔的动作也更容易。
我应该在一个单独的线程上运行他们每个人,在一个单独的事件运行它们,或运行所有那些在一个线程必须检查时间差异。
在我看来,你应该使用三个计时器。三是一个不应该以负面影响表现的数字。
计算时间差时的一大缺陷是时间变化(夏令时,与Internet同步)。 你将不得不使用Environment.TickCount
。
顺便说一句,你的问题是关于_.NET_'System.Timers.Timer'组件。 C#编程语言没有定时器。 – 2009-12-22 04:43:28
看看问题:http://stackoverflow.com/questions/1416803 – Oliver 2009-12-22 07:42:37