正确的方式有无尽的等待

Mil*_*les 0 .net c#

所以我有一个有定时器列表的程序.每个计时器都有一个tick事件,我只想说,例如,我有10个计时器启动(所有计时器都在列表中).

永远坐着的最佳方式是什么(或直到我告诉它停止)?我应该有一个while循环吗?

foreach(Timer t in _timers)
{
   t.Start();
}

while(true)
{
   Application.DoEvents();
   System.Threading.Thread.Sleep(5000);
}
Run Code Online (Sandbox Code Playgroud)

我觉得这不是最好的方式......

- 更新这是我的整个计划:

public static void Main()
{
  // set some properties and set up the timers

    foreach(Timer t in _timers)
    {
       t.Start();
    }

    while(true)
    {
       Application.DoEvents();
       System.Threading.Thread.Sleep(5000);
    }
}
Run Code Online (Sandbox Code Playgroud)

而已.没有UI,没有别的.如果我没有while循环,那么程序就完成了.

dss*_*539 8

使用EventWaitHandle或数组EventWaitHandle来阻止线程执行使用WaitOne()WaitAll()方法.

http://msdn.microsoft.com/en-us/library/kad9xah9.aspx

所以举个例子

ManualResetEvent mre = new ManualResetEvent(false);
mre.WaitOne();
Run Code Online (Sandbox Code Playgroud)

将等待永恒.

编辑

由于您正在提供服务,因此您可能希望阅读本文.