线程池中的所有线程都是后台线程,如果程序中的所有前台程序都结束了,那么所有的后台线程将会停止。线程池中的线程不能修改为前台线程

使用范例如下:

using System;
using System.Threading;

namespace Wrox.ProCSharp.Threading
{


   
class Program
   {
      
static void Main()
      {
         
int nWorkerThreads;
         
int nCompletionPortThreads;
         ThreadPool.GetMaxThreads(
out nWorkerThreads, out nCompletionPortThreads);
         Console.WriteLine(
"Max worker threads: {0}, I/O completion threads: {1}", nWorkerThreads, nCompletionPortThreads);

         
for (int i = 0; i < 5; i++)
         {
            ThreadPool.QueueUserWorkItem(JobForAThread); 

         }

         Thread.Sleep(
3000);
      }


      
static void JobForAThread(object state)
      {
         
for (int i = 0; i < 3; i++)
         {
            Console.WriteLine(
"loop {0}, running inside pooled thread {1}", i, 
               Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(
50);            
         }

      }
   }

} 

posted on 2011-05-10 22:01  jackdesk  阅读(327)  评论(0编辑  收藏  举报