问题描述
winform代码中使用Thread.Abort终止线程遇到以下错误。在System.Threading.ThreadAbortException中第一次偶然出现的“mscorlib.dll”类型的异常。请各位大神帮忙解决以下
解决方案
解决方案二:
不会看MSDN吗?Thread.Abort方法.NETFramework4其他版本1(共1)对本文的评价是有帮助-评价此主题在调用此方法的线程上引发ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程。命名空间:System.Threading程序集:mscorlib(在mscorlib.dll中)
解决方案三:
设计不合理,尽量不要用那个方法
解决方案四:
引用1楼wddw1986的回复:
不会看MSDN吗?Thread.Abort方法.NETFramework4其他版本1(共1)对本文的评价是有帮助-评价此主题在调用此方法的线程上引发ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程。命名空间:System.Threading程序集:mscorlib(在mscorlib.dll中)
我问的是如何解决,而是定义。
解决方案五:
引用2楼dongxinxi的回复:
设计不合理,尽量不要用那个方法
有什么更好的办法,终止当前线程的执行。
解决方案六:
让线程退出不要使用外部的暴力方法,简单说://threadfuncvoidthread_exe_func(){bFlag=true;while(bFlag){...loop();}}//停止线程//在外面调用bFlag=false;
当然使用信号量之类的也行
解决方案七:
解决方案要解决此问题,请使用下列方法之一:对于Response.End,调用HttpContext.Current.ApplicationInstance.CompleteRequest方法而不是Response.End以跳过Application_EndRequest事件的代码执行。对于Response.Redirect,请使用重载Response.Redirect(Stringurl,boolendResponse),该重载对endResponse参数传递false以取消对Response.End的内部调用。例如:Response.Redirect("nextpage.aspx",false);如果使用此替代方法,将执行Response.Redirect后面的代码。对于Server.Transfer,请改用Server.Execute方法参考:http://blog.sina.com.cn/s/blog_67a3453d0101bn2b.html
解决方案八:
你是什么需求为什么要用到线程呢?
解决方案九:
最简单的办法当然是加个try,把错误给屏蔽了拉倒但是外部暴力结束线程,可能导致线程申请的非托管资源无法释放,导致内存泄露所以更好的办法当然是用事件通知或者外部全局变量来判断,让线程自己退出