“在 System.Threading.ThreadAbortException 中第一次偶然出现的‘mscorlib.dll’类型的异常”的解决方法

来源:互联网 发布:云计算存储技术 编辑:程序博客网 时间:2024/06/05 02:03

在官网上搜索ThreadAbortException,可知这是由于调用Abort()函数暴力关闭线程引起的。由于调用Abort()时有可能线程没有进行完,就会抛出这个异常。

至于影响嘛,搜到的资料都显示如果是在程序运行中途出现在控制台的,不影响运行的话并没有什么很大的影响。所以可以忽略。

官网上也给了一种解决办法,就是使用Join()函数替代Abort()函数,Join()函数会等待当前线程进行完以后再关闭线程。但是如果在程序中并没有运行关闭线程的命令,那么Join()函数自己是不会关闭线程的(而Abort()可以直接关闭线程),这样会导致线程无限进行下去。

另外一种办法是使用try{关闭线程的代码}   catch(ThreadAbortException){出现异常的处理}这样的方法,不过笔者作为初学者,道行尚欠,试了几次,还没参透这么做的意义……所以并没有采用。

所以推荐不用Abort()这种函数来关闭线程,而是采用程序中的比如条件判断,比如do……while(flag)等方式终止线程。以下为Join()的改良版,这样线程能终止并且不再出现异常


以下为官网地址https://msdn.microsoft.com/zh-cn/library/system.threading.threadabortexception(v=vs.110).aspx不过推荐看英文原版,官网中文版是机器翻译,总感觉不说人话呢……

0 0