2014-05-02 27 views
1

我期望定期运行一个方法,但希望通过让它在单独的线程中运行来优化我的代码。到目前为止,我的代码看起来象下面这样:定时器方法运行哪个线程?

private System.Timers.Timer timerQuartSec = new System.Timers.Timer(250); 
private Thread quarterSecThread; 

timerQuartSec.Elapsed += new System.Timers.ElapsedEventHandler(someMethod); 

quarterSecThread = new Thread(new ThreadStart(timerQuartSec.Start)); 

我的问题是,将这段代码只需启动定时器或将代码(上TimerElapsed)在新的线程上运行?

+1

这可能会帮助你http://msdn.microsoft.com/en-us/magazine/cc164015.aspx –

+0

@ K.B我明白它不会运行。这只是一个片段。前两行是实际方法之前的变量声明。 – GroomedGorilla

+0

谢谢@HamletHakobyan。很棒的阅读,肯定帮助我理解了定时器类型之间的区别。幸运的是我使用的是正确的。 – GroomedGorilla

回答

2

System.Timers.Timer将在ThreadPool线程上运行,只要您不设置计时器的SynchronizingObject即可。

因此不需要启动专用线程。如果你想访问GUI元素,你需要注意。

+0

不实际。它也可以在UI线程中运行。 –

+0

仅当相应地设置了“SynchronizingObject”时 - 它不在代码片段中。我将这条信息添加到答案中。 – JeffRSon

+0

似乎有道理。如果计时器被自动分配给一个单独的线程,那么一切都应该没问题......然后这又意味着程序的另一部分正在造成延迟!谢谢@JeffRSon – GroomedGorilla

相关问题