线程中断异常的处理 abort()

  做一个小项目碰到的问题,先保存下来,再次碰到时,心里有个数。嘻嘻。

 

       在测试手机地图时,遇到一个问题,就是内存泄露(OutOfMemoryException),异常代码0xc0000005,写入出错,这是由于没有及时释放地图窗体对象,而又多次连续操作地图打开、关闭,造成内存泄露,指针指向出现错误,内容写不入对应的地址中。窗体及时释放后就OK啦。
    点击主界面中关闭系统选项时,报threadAbortexception异常。这是由于关闭系统时,进行线程的Abort()操作时,还有一个线程在运行,没有关闭,出现此异常,写了一个单独的方法,处理没有关闭的线程就OK啦。

 

    以下是官方对THreadAbortException的解释:在对 Abort 方法进行调用时引发的异常。

    

在调用 Abort 方法以销毁线程时,公共语言运行时将引发 ThreadAbortException ThreadAbortException 是一种可捕获的特殊异常,但在 catch 块的结尾处它将自动被再次引发。 引发此异常时,运行时将在结束线程前执行所有 finally 块。 由于线程可以在 finally 块中执行未绑定计算,或调用 Thread.ResetAbort 来取消中止,所以不能保证线程将完全结束。 如果您希望一直等到被中止的线程结束,可以调用 Thread.Join 方法。 Join 是一个阻塞调用,它直到线程实际停止执行时才返回。

说明

在托管可执行文件中的所有前台线程已经结束后,当公共语言运行时 (CLR) 停止后台线程时,它不使用 Thread.Abort 因此,无法使用 ThreadAbortException 来检测 CLR 何时终止后台线程。

你可能感兴趣的:(线程中断异常的处理 abort())