protected void Button3_Click1(object sender, EventArgs e)
    {
       
        for (int i = 0; i < 10; i++)
        {
            Thread drawThread = new Thread(new ThreadStart(GetSession));
            drawThread.Name ="Thread"+(i+1);
            drawThread.IsBackground = true;
            listThread.Add(drawThread);
            drawThread.Start();         
        }      
    }
public void  GetSession()
    {
......
CloseThread();
    }
    private void CloseThread(string temp)
    {
        foreach (Thread tempThread in listThread)
        {
            if (tempThread.Name == temp)
            {
                if (tempThread.IsAlive)
                {                    tempThread.Abort();
                }
            }
        }      
    }
上面调用线程关闭是有问题的,请问当有多个线程执行时,怎么关闭执行GetSession()完毕的线程

解决方案 »

  1.   

    什么“关闭线程”?Abort只是设置一下状态值,也就是设置一个通知标志而已,哪里是什么“关闭”!程序如果自己结束,线程自然就“关闭”了。所以你的程序中(往往是内层循环语句)要写if语句来判断一下是否直接跳出程序。
      

  2.   


    MSDN上说在线程上调用Thread.Abort();
    此方法时,系统在线程中引发 ThreadAbortException 以中止它。 
      

  3.   


    Thread.Abort();是异常结束,并非正常结束啊。正常结束就应该是程序执行到线程底自动关闭回收。如果你担心资源不够,你可以建立线程池,这样你就有数了。