ThreadAbortException是可以传递的

今天在写线程Aborted代码时,发现嵌套的try catch中的ThreadAbortException错误是可以从内部传递到外部的,想想这也是必然的,在内部该线程已经中断了,外部必然是中断了,再仔细一想,ThreadAbortException并不是传递的,而是外层的catch再次捕捉到了中断的错误。

另外还发现了一个现象,目前还不知道为什么,先记录一下,之后解决。

现象如下:执行到等待点1时Aborted,捕捉点1,捕捉点3都迅速捕捉到的中断的错误;

                 执行到等待点2时Aborted,捕捉点2捕捉不到中断错误,捕捉点3等到sleep完之后才捕捉到中断错误;

                 执行到等待点2时Aborted,如果等待点2后面还有错误,那么捕捉点2将捕捉不到中断,错误点1捕捉到错误,捕捉点3也捕捉不到中断,错误点1throw了,错误点2直接捕捉到错误,结果就是Aborted失效了!!!!

不知道各位大神这是为什么?

try
            {
                try
                {
                    Thread.Sleep(60000);//等待点1
                }
                catch (ThreadAbortException)
                {
                    //捕捉点1
                }
                catch (Exception)
                {
                    try
                    {
                        Thread.Sleep(60000);//等待点2
                    }
                    catch (ThreadAbortException)
                    {
                        //捕捉点2
                    }
                    catch (Exception)
                    {
                        //错误点1
                    }
                }

            }
            catch (ThreadAbortException)
            {
                //捕捉点3
            }
            catch (Exception)
            {
                //错误点2
            }

 

posted @ 2018-08-15 16:59  ichenhao  阅读(301)  评论(0编辑  收藏  举报