回 帖 发 新 帖 刷新版面

主题:线程造成死循环怎么才能结束

我用一个线程控制了6个标签作循环输出随机数字
这是一个开始按钮的单击事件
while(true)
{
     Random objrandom=new Random();
     Lable1.Text=objrandom.Next(0,9);
     Lable2.Text=objrandom.Next(0,9);
     Lable3.Text=objrandom.Next(0,9);
     .
     .
     .
     Lable6.Text=objrandom.Next(0,9);
     Thread.Sleep(100);
}
用一个方法单击事件结束(是一个停止按钮来实现的此功能)

     try
     { 
     //Thread.CurrentThrad.Join();
     Thread.CurrentThread.Abort();
      }
      catch(ThreadAbortException)
      {
        Console.WriteLine("出现错误");
      }

这时会出现终止错误.好像这是因为上面的条件while(true)的原因造成的死循环
怎样把while的条件改正
谢谢

回复列表 (共2个回复)

沙发

不要利用Thread.CurrentThread.Abort();
如果要退出线程,直接return;
因为线程自动终止时会自动抛出ThreadAbortException

做个全局变量,比如bool Stopped;
while(!Stopped){
...
}

停止时只需将Stopped设为true即可。

板凳

死循环体中加入System.Windows.Forms.Application.DoEvents();

我来回复

您尚未登录,请登录后再回复。点此登录或注册