public void Starttest()
        {
            while (true)
            {
                try
                {
             。。
..........................................按按钮一启动如上多线程方法,在不按按钮2的情况下一直true循环运行。问题来了,除了关程序。能不能按另一个按钮让他停下来呢? 

解决方案 »

  1.   

    可以,我之前做过,是这样做的:1.构造线程的时候,给它个名字,启动线程之前,把它加到一个dic(Dictionary<string, Thread>)里.       Thread t = new Thread(new ThreadStart(this.RunThread));
           t.Name = 线程名字;
           t.IsBackground = true;       // 线程开始前 把它加入到DataTable
           dic.Add(t.Name, t);2.点停止按钮,就根据线程名字在dt里找出来,然后销毁掉.       dic[线程名字].Abort();
           dic[线程名字].Join();这方法针对多个线程也适用,需要停哪个就停哪个.
      

  2.   

    不仅仅是多线程,while(true)这样的循环,一般都会在循环内部设置某些条件,当这些条件满足的时候可以break,跳出无穷循环。
    有人说还不如直接把条件写在while后面,有些情况下,有些条件特别复杂,需要经过很多步骤才能判断。
      

  3.   

    Abort会引发线程异常,需要做好后续处理。
      

  4.   

    if(stop)
      return
    直接这样吧 最好不要去掉abort方法
      

  5.   

    while 内部等待一个 event( manualresetevent, or autoresetevent) 一定时间,
    如果没触发, 继续循环, 如果触发了, 退出循环外头要她停下来的地方触发 event
      

  6.   

    你的while循环 不要用true  用一个布尔变量就行了嘛!! 你想让它停下来的时候 就把那个布尔值置为falsebool loop = false;
    while(loop)
    {
    }
    这样
      

  7.   

    while(true)

       //但满足一定的条件时,break即可
       if(条件)
       {
           break;
       }}
      

  8.   

    暂停就sleep.
    退出就return.
    或者采用互斥原则.