如果一个线程被Abort了,还能不能重新Start

realmagician 2010-05-25 02:50:14
RT
...全文
911 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-05-27
  • 打赏
  • 举报
回复
不行,要重新new。
要记住线程的概念,什么是线程:运行的方法就叫线程。
dylike 2010-05-27
  • 打赏
  • 举报
回复
爱情破碎了,还能不能重头再来
纵横宇宙 2010-05-27
  • 打赏
  • 举报
回复
Thread.IsAlive 判断线程是否处于活动状态
realmagician 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jsnjlhb 的回复:]
有没有判断结束成功了呢,如果还没成功就又开始肯定有问题的
[/Quote]
额。。。那要怎么判断结束成功了呢???
jsnjlhb 2010-05-25
  • 打赏
  • 举报
回复
有没有判断结束成功了呢,如果还没成功就又开始肯定有问题的
realmagician 2010-05-25
  • 打赏
  • 举报
回复
看看我写的代码。结束A线程后,再开始的话,弹出“线程正在运行或被终止;它无法重新启动”
private void a()
{
while (true)
{
if (formclosed == true)
break;
listBox1.Items.Add("A:");
}
}
private void Form1_Load(object sender, EventArgs e)
{
A = new Thread(new ThreadStart(this.a));
}
private void button1_Click(object sender, EventArgs e)
{
A.Start();
}

private void button2_Click(object sender, EventArgs e)
{
if (A.IsAlive)
A.Abort();
}
realmagician 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 deknight 的回复:]
只有当该线程是被其他的线程通过调用Thread.Interrupt()或者Thread.Abort()方法,才能被唤醒。如果对处于阻塞状态的线程调用Thread.Interrupt()方法将使线程状态改变,但是会抛出ThreadInterupptedException异常
[/Quote]
所谓的唤醒就是Thread.Start吧?
myhope88 2010-05-25
  • 打赏
  • 举报
回复
路过,帮顶下
z050301402 2010-05-25
  • 打赏
  • 举报
回复
嗯 对的
zhehan54 2010-05-25
  • 打赏
  • 举报
回复
deknight
正确的
支持。。
deknight 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 realmagician 的回复:]
引用 2 楼 zhehan54 的回复:
这个不一定的
你先看下MSDN 上对abort方法的介绍
调用此方法后
线程不一定或者根本不中止
如果成功中止
那就可以重新start 了
如果没中止掉就start 的话
提示异常:线程正在运行或被终止;它无法重新启动。

那如何判断是否成功终止了呢?
[/Quote]

if(th.IsAlive)
{
  th.Abort();
}
deknight 2010-05-25
  • 打赏
  • 举报
回复
只有当该线程是被其他的线程通过调用Thread.Interrupt()或者Thread.Abort()方法,才能被唤醒。如果对处于阻塞状态的线程调用Thread.Interrupt()方法将使线程状态改变,但是会抛出ThreadInterupptedException异常
realmagician 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhehan54 的回复:]
这个不一定的
你先看下MSDN 上对abort方法的介绍
调用此方法后
线程不一定或者根本不中止
如果成功中止
那就可以重新start 了
如果没中止掉就start 的话
提示异常:线程正在运行或被终止;它无法重新启动。
[/Quote]
那如何判断是否成功终止了呢?
dataadapters 2010-05-25
  • 打赏
  • 举报
回复
不能,当调用Thread.Abort()后,即永久的终止了线程,当再调用Start()时,会引发ThreadStateException异常.
deknight 2010-05-25
  • 打赏
  • 举报
回复
ls说的对,我马虎了
zhehan54 2010-05-25
  • 打赏
  • 举报
回复
这个不一定的
你先看下MSDN 上对abort方法的介绍
调用此方法后
线程不一定或者根本不中止
如果成功中止
那就可以重新start 了
如果没中止掉就start 的话
提示异常:线程正在运行或被终止;它无法重新启动。
deknight 2010-05-25
  • 打赏
  • 举报
回复
不能 回复内容太短了!

111,113

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧