问题简单示例代码如下:void work()
{
  Thread Snd_Thread=new Thread(new ThreadStart(SndThread));
}
void SndThread()
{
  //初始化信息
  while(true)
   {
     //N多工作
     //收到停止消息
     stop();
   } 
}
void stop()
{
  //停止工作线程
  //执行停止操作
  //按条件再次运行线程
  SndThread();
}
请问这样,会不会再次初始化信息后,再运行线程??
用ThreadPool运行的线程,与不用它运行的线程有什么区别(MSDN上的内容就不要来了,我看过了)

解决方案 »

  1.   

    這樣寫?,你這如要分類的話,要屬於遞歸了,那麼當然就是執行一個新的SndThread了
    ThreadPool只是個線程池了,就是把線程都裝在裡面
      

  2.   

    用ThreadPool运行的线程,与不用它运行的线程本身是一样的,只是对于线程的管理有不同。ThreadPool不需要你自己控制线程资源。而自己创建的线程一般用来做需要与其他线程又频繁交互且长时间运行的任务。
      

  3.   

    1. ThreadPool 就是一个pool,你愿意自己也可以写,很简单,用不用根据需要2. 你的代码可能有问题
    void SndThread()
    {
      //初始化信息
      while(true)
       {
         //N多工作
         //收到停止消息
         stop();          // 在这里你调用了stop
       } 
    }
    void stop()
    {
      //停止工作线程
      //执行停止操作
      //按条件再次运行线程
      SndThread();        // 在这里你没有return,而是直接调用了SndThread,等于这两个函数在没有推出的情况下循环调用,可能会发生stack overflow。(可能这是你的本意,我只是提醒一下 :-p)
    }
      

  4.   

    把线程的ApartmentState设置成ApartmentState.MTA有什么用?成员名称 说明 
    MTA Thread 将创建并进入一个多线程单元。 
    STA Thread 将创建并进入一个单线程单元。 
    Unknown 尚未设置 ApartmentState 属性 
    这些会对线程的运行产生什么样的影响???