+ -
当前位置:首页 → 问答吧 → return后为什么还会返回到方法体

return后为什么还会返回到方法体

时间:2011-12-11

来源:互联网

由一个线程调用bQiqang这个方法,如果sTread为true的时候就return
那么根据设断点发现个问题就是,如果sTread为true的时候确实return到A处了,但在F11的时候从A处却直接到了B处,B处之前的代码均未执行

有时候会成功return,有时候则会出现这种问题

C# code

        private void bQiang(object threadData)
        {
            while (1 == 1)
            {
                if (sThread)
                {
                    Console.WriteLine("while停止循环");
                    return; 
                }
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch (WebException ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);
                    bQiang(threadData);            //B处    
                 }
             }
          }  //A处

作者: hailun   发布时间: 2011-12-11

你这个是线程中的吗,线程的执行时无序的,你没有加锁,所以会乱跳

作者: bdmh   发布时间: 2011-12-11

是线程中的,就是一个UI主线程和一个新线程,是在新线程中的,就一个执行的新线程也会乱跳吗?但设断点的跟进的话,没看出乱跳啊,而且就算是乱跳,为什么每次发生的时候都跳到B处呢?而不是其他地方呢?

作者: hailun   发布时间: 2011-12-11

你这里还涉及到了递归,这个就更有可能了,你还是仔细的调试看看吧,不行就打印一个日志出来

作者: bdmh   发布时间: 2011-12-11

友情帮顶。

作者: foxd   发布时间: 2011-12-11

回三楼,我是自学,可以麻烦告之一下如何打印日志出来吗?

作者: hailun   发布时间: 2011-12-11

相关阅读 更多