计时器线程进入睡眠状态时会发生什么情况

本文关键字:什么情况 状态 线程 计时器 | 更新日期: 2023-09-27 17:56:25

static readonly System.Timers.Timer _timer = new System.Timers.Timer();
static void Main(string[] args)
{
    _timer.Interval = 1000;
    _timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
    _timer.Start();
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}
static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    Console.WriteLine(DateTime.Now);
    Thread.Sleep(600000); // 10 minutes
    Console.WriteLine(DateTime.Now);
}

睡眠时间这么长的计时器线程会发生什么?它是否会回到线程池或我们最终会得到许多睡眠线程?

计时器线程进入睡眠状态时会发生什么情况

休眠线程将返回到线程池,但仅在睡眠结束后。线程池具有最大线程数,这意味着您可能会用完要使用的线程,因为所有线程都将处于休眠状态。

编辑:

线程池文档:

http://msdn.microsoft.com/en-us/library/system.threading.threadpool.getmaxthreads.aspx