C#为什么不能强行终止线程

不知道是c#设计疏忽还是我没找到方对,.net一直无法强行线程子线程的操作
不知道大家注意没有,如果子线程里有 死循环(有时间必须用循环)或子线程在进行一个阻塞式的操作,如影响队列里的消息,那么不能主线程用什么方式终止子线程都没门,
  this.thread.Suspend();
  this.thread.Abort()
通通不管用,得调用win32api去强行终止,我的妈呀.net又把你赶回win32时间了
Abort() 方法也只是建议子线程终止,而不是无条件强行终目,这个不好,比如应用程序要退出,子线程结束不了会一直驻留内存exe都不会退出进程,有什么办法强行终止子线程哈,不要说类似于(不要用死循环,无意义之类的话,那对阻塞式的操作怎么说呢)
这一句的时候把线程阻死了 System.Messaging.Message m = q.Receive(); 
不管等多少,线程都是死的

晕,简单点,把线程设置为后台线程不就得了,还要弄个你死我活的,找不到解决方案

后台线程,在你程序关闭的时候,它也会自动销毁的

你的程序代码设计得有点问题

可以试试在退出的时候用
System.Environment.Exit(System.Environment.ExitCode);
Application.Exit();

还用在那些线程开始前,使用它的属性IsBackground,好像是这个,把它设为true,这样在你程序结束的时候,线程也会自动结束

对什么啊
编程中的情况有太多种了。比如UDP通讯
比如我的软件中有一个主的等待线程,接收到一个有效消息后,就会分配一个端口,开启一个新的监听线程。
客户端会不断的向这个端口发送心跳包。
如果超时就认为是客户端断开了连接。客户端就要重新去主线程去申请端口。
当然我也要强行结束没有心跳包发来的 线程,关闭端口。怎么可能不断的开线程不销毁呢。

如果等待连接的线程超时,它自己应该主动关闭,而不是等着别人关闭它。

如果你遇到无法协作(业务逻辑设计上可以看出会死循环)的线程,聪明的办法不是去想办法终止它,而是应该把这类代码从自己的系统中删除。
来源:英超直播

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值