C# 停止线程的问题

private void Stop_Click(object sender, EventArgs e)
{
foreach (Thread threada in thread)
{
if (threada.ThreadState != ThreadState.Stopped)
{
threada.Abort();
}
}
}
单击完按钮线程马上停止

正常停止线程要添加什么代码
就是说单击完停止按钮 让线程先执行完方法里的代码后线程再终止

第1个回答  推荐于2016-05-25
你的代码逻辑我是这样理解的,遍历N个线程,如果线程状态不是stopped,就终止该线程
那你可以这样:private void Stop_Click(object sender, EventArgs e)
{
foreach (Thread threada in thread)
{
//如果线程状态不为stopped,执行if里的业务逻辑代码
if (threada.ThreadState != ThreadState.Stopped)
{
//业务逻辑代码
// add logic code
//执行完终止该线程
threada.Abort();
}
}
}本回答被提问者采纳
第2个回答  2011-03-30
threada.Abort();有时候会出异常的,当然这样也是可以停止线程的,其实微软好像推荐的是使用threada.join()方法来终止线程
第3个回答  2011-03-30
这就是正常停止
线程执行完方法里的代码自己就退出了,不用你终止

C# 停止线程的问题
你的代码逻辑我是这样理解的,遍历N个线程,如果线程状态不是stopped,就终止该线程 那你可以这样:private void Stop_Click(object sender, EventArgs e){ foreach (Thread threada in thread){ \/\/如果线程状态不为stopped,执行if里的业务逻辑代码 if (threada.ThreadState != ThreadState.Stopped){...

C# 子线程快速终止的几个办法
在主线程关闭处理时,首先关闭子线程。代码如下:问题:主程序关不掉,类似于死机状。版本3:改进一下,在程序启动时强制停止同名进程。在Program.cs的main方法中实现,代码如下:版本4:(终结版本)C#多线程编程时,Thread对象有个IsBackground属性,设置为true即可,在主线程关闭时,子线程随之关闭,速...

我也遇到了一个线程自动停止的问题 C#
估计是循环中的代码因为某种原因出错了,把你while循环里的代码前后加个 while(true){try{\/\/你的代码}catch(exception e){\/\/将e.message记录一下,至于写入哪里随你的,比如存在文件或者写入系统日志中,建议用后者。}Thread.Sleep(5000);}再出错的时候检查一下这个日志看看问题在哪。

c#线程停止
c#线程停止方法:1.我们需要在C#代码中添加Thread类,就可以开始设置。2.然后我们就能在这里就能设置,设置ThreadStart类进行实例化。3.此时我们就可以在这里启动并且和状态在执行,这是前提。4.因此我们就可以在这里对Thread对象,进行中止操作。5.为了程序的友好性,我们可以在这里输出一条提示。6.此时我们运...

C#如何停止后台线程
不知道你要摧毁特定的线程,还是全部线程 给你个例子 Thread t = new Thread(new ThreadStart(run)); \/\/运行run方法的线程 t.Abort(); \/\/摧毁它

C#中关闭程序时如何自动结束正在运行的线程?
\/\/窗体关闭事件中添加如下代码 if(this.thread != null || this.thread.IsAlive){ this.thread.Abort();this.thread = null;} \/\/就OK了

c# 一个程序暂停的小问题
我建议你用两个定时器,假定为Timer2时间间隔设置为5S Enable属性设为False private void button1_Click(object sender, EventArgs e){ Timer2.Enable = True;} private void timer2_Tick(object sender, EventArgs e){ textBox1.Text = (System.DateTime.Now.Second).ToString();Timer2.Enable = ...

C#console.readline有终止程序继续进行之意吗?从键盘通过console.readline...
1,控制台应用程序在运行完所有代码后会自动关闭,看了你代码的问题不是因为Console.ReadLine();的问题导致程序关闭,你应该想要的结果是能看见K=1吧?吧Console.ReadLine();写到程序最后就可以了。2,readline获取到的都是string 3,因为float其整数部分始终是一个隐含着的“1”,所以绝对保证的只有6位...

C#创建线程以后,是否也一定要停止他
执行完了就自动完成了,毕竟你在线程执行的是一个函数,如果你这个函数是个死循环函数,就要终止了,用Abort方法。还有在Thread回收或自动析构前,一定要调用Join方法,等待线程结束,否则会有错误(结束需要时间)。

c#如何终止正在调用耗时DLL的线程?
如果关闭Th1的话,dll除非生成新的线程,才有可能关闭不了。所以关闭线程th1一般可以停止计算。至于使用Th1.Abort()会连程序都关闭,问题很多,一般是关闭线程是发生错误,导致程序崩溃。

相似回答