分享

关于Thread.Abort

 goodwangLib 2014-05-02
static void Main(string[] args)
        {
            Thread th 
= new Thread(Fun);
            th.Start();
            Thread.Sleep(
1000);
            th.Abort();
        }

        
static void Fun()
        {
            
try
            {
                
while (true)
                {
                    
try
                    {
                        Test();
                    }
                    
catch (ThreadAbortException ex) //在此处ThreadAbortException能被捕获到,但是还是会向上层冒泡
                    {
                        Console.WriteLine(
"线程被终止了");
                       
//由于是在异常捕获中休眠,所以即使其它线程调用此线程的Abort方法结束此线程,也得等休眠时间过去才能将ThreadAbortException异常冒泡到此线程的最顶层代码
                        Thread.Sleep(3000);
                    }
                }
            }
            
catch (ThreadAbortException ex)//在此处ThreadAbortException能被捕获到,此线程结束
            {
                Console.WriteLine(
"结束了");
            }
        }
        
static void Test()
        {            
            
try
            {
                Thread.Sleep(
100000);  
            }
            
catch (ThreadAbortException ex)//在此处ThreadAbortException能被捕获到,但是还是会向上层冒泡
            {
                Console.WriteLine(
"Test_ThreadAbortException");
            }
            
catch (Exception ex)
            {
                Console.WriteLine(
"Test_Exception");
            }
        }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多