线程中断异常的处理 abort()
2011-03-02 16:40
369 查看
做一个小项目碰到的问题,先保存下来,再次碰到时,心里有个数。嘻嘻。
在测试手机地图时,遇到一个问题,就是内存泄露(OutOfMemoryException),异常代码0xc0000005,写入出错,这是由于没有及时释放地图窗体对象,而又多次连续操作地图打开、关闭,造成内存泄露,指针指向出现错误,内容写不入对应的地址中。窗体及时释放后就OK啦。
点击主界面中关闭系统选项时,报threadAbortexception异常。这是由于关闭系统时,进行线程的Abort()操作时,还有一个线程在运行,没有关闭,出现此异常,写了一个单独的方法,处理没有关闭的线程就OK啦。
以下是官方对THreadAbortException的解释:在对 Abort 方法进行调用时引发的异常。
在调用 Abort 方法以销毁线程时,公共语言运行时将引发 ThreadAbortException。 ThreadAbortException 是一种可捕获的特殊异常,但在 catch 块的结尾处它将自动被再次引发。 引发此异常时,运行时将在结束线程前执行所有 finally 块。 由于线程可以在 finally 块中执行未绑定计算,或调用 Thread.ResetAbort 来取消中止,所以不能保证线程将完全结束。 如果您希望一直等到被中止的线程结束,可以调用 Thread.Join 方法。 Join 是一个阻塞调用,它直到线程实际停止执行时才返回。
在测试手机地图时,遇到一个问题,就是内存泄露(OutOfMemoryException),异常代码0xc0000005,写入出错,这是由于没有及时释放地图窗体对象,而又多次连续操作地图打开、关闭,造成内存泄露,指针指向出现错误,内容写不入对应的地址中。窗体及时释放后就OK啦。
点击主界面中关闭系统选项时,报threadAbortexception异常。这是由于关闭系统时,进行线程的Abort()操作时,还有一个线程在运行,没有关闭,出现此异常,写了一个单独的方法,处理没有关闭的线程就OK啦。
以下是官方对THreadAbortException的解释:在对 Abort 方法进行调用时引发的异常。
在调用 Abort 方法以销毁线程时,公共语言运行时将引发 ThreadAbortException。 ThreadAbortException 是一种可捕获的特殊异常,但在 catch 块的结尾处它将自动被再次引发。 引发此异常时,运行时将在结束线程前执行所有 finally 块。 由于线程可以在 finally 块中执行未绑定计算,或调用 Thread.ResetAbort 来取消中止,所以不能保证线程将完全结束。 如果您希望一直等到被中止的线程结束,可以调用 Thread.Join 方法。 Join 是一个阻塞调用,它直到线程实际停止执行时才返回。
说明 |
---|
在托管可执行文件中的所有前台线程已经结束后,当公共语言运行时 (CLR) 停止后台线程时,它不使用 Thread.Abort。 因此,无法使用 ThreadAbortException 来检测 CLR 何时终止后台线程。 |
相关文章推荐
- 【Flask】abort和errorhandler、app_errorhandler进行请求中断及自定义异常处理
- ARM中断异常处理的返回
- 七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL 【转】
- 关于s3c2410 中断异常处理
- ARM中断异常处理的返回
- Android 中断线程的处理
- 异常处理,abort(),exit(),返回错误码
- Windows 系统编程初探 (五)结构化异常处理之二:线程相关异常处理
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】深入剖析Linux中断机制之三--Linux对异常和中断的处理
- 深入剖析Linux中断机制之三---Linux对异常和中断的处理
- Java并发学习之八——在线程中处理不受控制的异常
- java线程对异常的处理
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- MIPS 异常和中断处理(Exception and Interrupt handling)
- 七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL
- 六、线程的代码实现:pcb栈、线程栈、PCB初始化、中断处理函数、调度函数->多线程调度
- arm linux之data abort异常处理
- 6410之异常中断处理
- 线程未处理异常
- commons-fileupload 上传中断异常处理