日期:2014-05-17  浏览次数:20997 次

如何结束线程池中的所有线程
如题,如果线程池中正在运行的有400线程,如何结束所有线程

------解决方案--------------------
引用:
不建议在主线程中使用死循环。楼上在非主线程中使用死循环估计是可以的
主线程
public void start()
{
    Thread t = new Thread(new ThreadStart(m));
    t.start();
    while(true)
    {
        //如果是为了不让主线程退出而做死循环的话,t线程就不会执行,因为执行到死循环这里就卡死了
    }
}

你从哪里看到他用了死循环?我倒是看到你用了死循环。人家好好的用个标志量控制循环的结束着呢。
另外什么叫“不建议在主线程中使用死循环”,一看就知道概念不清晰。一个进程可以有多个无主次之分的前台线程,有多个无主次之分的后台线程,有一个默认的线程池,而各个线程之间都是独立的,没有什么主从之分。通过不同的线程,我可以同时打开多个互相之间各不影响的窗口,每个窗口都用ShowDialog方式打开,但是谁都不妨碍谁。

对于楼主的问题,不能使用线程池操作,如果你选择了线程池,那就意味着你将放弃对线程的任何干预。又由于你有多个线程要执行,也不适合用Thread类操作,那个虽然可以组成数组来存储线程集合,但是有更好的,那就是利用.NET4.0里新增的Task类,多任务管理。Task可以对多个任务同时进行等待、终止、设置超时等,功能非常强大。