int cur_avi_th=0;
int cur_avi_other_th=0;while(true)//等待所有处理线程都结束
{
  Thread.Sleep(1000);
  ThreadPool.GetAvailableThreads(out cur_avi_th,out cur_avi_other_th);
  if(cur_avi_th==25)
  {break;}
}

解决方案 »

  1.   

    回复人:mowanglijiang(魔王立江www.3http.com) ( ) 信誉:89 2007-4-2 0:42:16 得分:0 
     
     
    万一同时使用超过了25,系统会建立更多的线程的。>>>在 .net 1.1里,超过25,那么新增加的只会进入等待状态
     
     
      

  2.   

    我又看到一个说法,说这个可用线程数是和CPU数量相关的,也就是说不同的机器是不一样的,那这样的话我干脆这样写:
    int max_avi_th=0;
    int cur_avi_th=0;
    int cur_avi_other_th=0;ThreadPool.GetAvailableThreads(out max_avi_th,out cur_avi_other_th);
        //先获取可能的最大线程数//********************//
    //在此处用线程池启动一定量的线程,根据我目前的情况,肯定不会多于25个
    //********************//while(true)//等待所有处理线程都结束
    {
      Thread.Sleep(1000);
      ThreadPool.GetAvailableThreads(out cur_avi_th,out cur_avi_other_th);
      if(cur_avi_th==25)
      {break;}
    }//做其他操作