见标题.

解决方案 »

  1.   

    abort(),并且我给线程的while(_ThreadSwitch )加上_ThreadSwitch 
    /// <summary>
            /// 终止所有线程
            /// </summary>
            private void StopThreads()
            {
                _ThreadSwitch = false;
                if (_threads == null)
                {
                    return;
                }
                for (int i = 0; i < _threads.Length; i++)
                {
                    if (_threads[i] == null)
                    {
                        continue;
                    }
                    while (_threads[i].ThreadState != ThreadState.Stopped && _threads[i].ThreadState != ThreadState.Aborted)
                    {
                        //如果线程正在运行,等待运行完了后终止
                        if (_threads[i].ThreadState == ThreadState.WaitSleepJoin)
                        {
                            try
                            {
                                _threads[i].Abort();
                                break ;
                            }
                            catch
                            {
                                break;
                            }
                        }
                        Thread.Sleep(100);
                    }
                    _threads[i] = null;
                }
            }
      

  2.   

    我最初强制把每个Thread.Abort()了,但发现进程还是在,所以才这样,去做个开关,关掉开关后再等待线程结束,但还是关不了
      

  3.   

    至此吧(愚翁专栏):
    http://blog.csdn.net/Knight94/archive/2006/08/24/1111267.aspx
    我觉得很好!!
      

  4.   

    _threads[i].Abort();
    _threads[i].Join();不过还是不推荐这样做,应该在线程里面用信号量来控制