求教:C#如何强制退出非托管代码的线程

Linda008 2018-11-02 09:30:54
C#中,在子线程中调用C++编写的dll接口,该接口如果超过规定的时间不能返回,主线程将强制关闭该子线程。
C#的Thread.Abort()不行,各位有什么方法没有,麻烦指点一二,多谢~
...全文
513 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2020-05-02
  • 打赏
  • 举报
回复
多线程搞不定的,可以多进程, 其它进程无响应不会导致主进程异常 响应超时后,直接把进程kill掉
wanghui0380 2020-04-29
  • 打赏
  • 举报
回复
引用 9 楼 泡泡龙 的回复:
弄到appdomain里面加载dll
正解。别人的东西挂了,我们能做的就是隔离他,尝试恢复他。 appdomain 可以 另外做exe单独封一下可以 简单说就是类似polly的隔离板(Bulkhead Isolation) 对,俺们现在不也一样么,有病了就隔离,避免问题扩大,然后再尝试治疗他 polly的介绍 https://blog.csdn.net/letnet1981/article/details/78120802
小灯塔 2020-04-29
  • 打赏
  • 举报
回复
exit()
泡泡龙 2020-04-29
  • 打赏
  • 举报
回复
弄到appdomain里面加载dll
飞天凤凰601 2020-04-29
  • 打赏
  • 举报
回复
引用 4 楼 以专业开发人员为伍 的回复:
关电源吧。
老兄,你一下把我逗笑了
lnh08_01 2020-04-27
  • 打赏
  • 举报
回复
遇到同样类似的问题,目标线程无法使用Abort()进行终止,请问您们是如何处理的。
吉普赛的歌 2018-11-06
  • 打赏
  • 举报
回复
那就调用 Proccess , 找到这个进程, 直接杀就是了
  • 打赏
  • 举报
回复
关电源吧。
loveljy_19901114 2018-11-06
  • 打赏
  • 举报
回复
thread.abort()会在子线程内抛出异常,你在你程序里面加个try...catch...看看能不能捕捉到这个异常
Linda008 2018-11-02
  • 打赏
  • 举报
回复
只能看到该接口的说明文字:该接口正常情况会返回true或false,不抛出异常。有没有办法直接杀掉这个dll线程,简单粗暴的方法就行
loveljy_19901114 2018-11-02
  • 打赏
  • 举报
回复
如何是在dll调用的函数处阻塞的话,他有占用系统一些非托管资源吗?如果有的话在你写Thread.Abort()处把这些资源关掉, 不过我还是建议你在看看这个dll文件吧,既然人家都封装起来了,肯定有对你遇到的这种情况的处理

110,536

社区成员

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

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

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