c#一个线程运行完怎么关闭自己也关闭其他线程??

qq_21238201 2017-05-28 01:21:51
一个窗体开了10个线程,其中有一个线程运行到一个条件,然后要关闭自己,并且关闭打开的其他9个线程怎么才能做到?我委托调用窗体的关闭所有的按钮会出异常。应该怎么解决
...全文
2243 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzw758 2017-07-23
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
你自己吃完了,还替别的正在吃的人付账 这不大合乎情理
我也有个类似的情况,因为本机有多个适配器,所以UDP要监听所有适配器的IP地址,我获取到所有IP然后分别新建一个线程去监听,用的是UdpClient.Receive的阻塞方法,只要一个线程的Receive接收到了信息,就拿到了远程IP地址,也就没有必要继续监听了,所以要把新建的这几个线程结束 由于Receive是阻塞的,没有办法直接通过判断条件结束,我先在考虑设置个超时时间,再设置个flag,超时后判断flag,没收到消息就继续Receive,不知道大家有没有更好的办法
秋的红果实 2017-05-29
  • 打赏
  • 举报
回复
出现什么异常了?
threenewbee 2017-05-29
  • 打赏
  • 举报
回复
全部都关闭用 process.current.kill就好了。
xuzuning 2017-05-29
  • 打赏
  • 举报
回复
你自己吃完了,还替别的正在吃的人付账 这不大合乎情理
  • 打赏
  • 举报
回复
引用 1 楼 qq_21238201 的回复:
我写的结束按钮代码。点击是没有问题的。意思是如果线程里调用这个的话就可以了,可是用委托调用还是异常。
Abort 本身就是造成线程崩溃、程序出错,不然一个正在执行的过程怎么Abort 啊? 所以我们正常的程序根本不允许随便写 Abort 语句。
  • 打赏
  • 举报
回复
按照你的说法,“其它9个线程”是死循环、而没有任何实际的业务逻辑标志(flag)控制它结束了?这种设计本来就是不应该的。线程所调用的方法通常应该只进行几十毫秒的快速操作,然后就实际结束。
  • 打赏
  • 举报
回复
引用 4 楼 qq_21238201 的回复:
对你说的我知道,可是我用来写一个脚本没办法,只能开线程来实现多开。
那你破坏它们(Abort它们),得到的这个结果也自然是没办法的。
qq_21238201 2017-05-28
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
[quote=引用 1 楼 qq_21238201 的回复:] 我写的结束按钮代码。点击是没有问题的。意思是如果线程里调用这个的话就可以了,可是用委托调用还是异常。
Abort 本身就是造成线程崩溃、程序出错,不然一个正在执行的过程怎么Abort 啊? 所以我们正常的程序根本不允许随便写 Abort 语句。[/quote] 对你说的我知道,可是我用来写一个脚本没办法,只能开线程来实现多开。
qq_21238201 2017-05-28
  • 打赏
  • 举报
回复
public void 结束button_Click(object sender, EventArgs e) { try { //---------------------------------------------------------------查找删除ListView int 总个数 = listView1.Items.Count;//总数等于是开了多少个线程 for (int k = 0; k < 总个数; k++) { int i = Convert.ToInt32(listView1.Items[0].SubItems[0].Text);//获得线程id 主线程[i].Abort(); 主线程[i].Join(); listView1.Items.RemoveAt(0);//删除第一行 } //---------------------------------------------------------------查找删除ListView AddListBox("结束脚本"); } catch (Exception er) { MessageBox.Show(er.ToString()); } } 我写的结束按钮代码。点击是没有问题的。意思是如果线程里调用这个的话就可以了,可是用委托调用还是异常。

110,538

社区成员

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

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

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