主程序创建一个线程ThreadPool.QueueUserWorkItem(new WaitCallback(线程A), null);线程A里面又创建了另外一个线程,这个线程里面有循环。ThreadPool.QueueUserWorkItem(new WaitCallback(线程B), 参数);线程B里面有循环……
foreach (Match match in matches)
            {
                代码,输出一些东西;
            }
……现在的问题是,如果我在线程B的循环处加断点,F10一步一步是能执行全部的循环操作的,如果我不加断点,直接运行的话,这个循环感觉是不执行的(不输出),而是直接执行循环后面的代码了。这个问题麻烦大家帮忙看一下。谢谢!!

解决方案 »

  1.   

    看上去像是时序问题。必要的地方加上
    Thread.Sleep(0);
    试试。加在哪你自己看代码找合适地方。避免循环占用太多cpu不释放。
      

  2.   

    楼上说的不错,线程嵌套的时候没有睡眠执行不出来吧,CPU执行的很快的
      

  3.   

    matches这个对象什么时候生成的?
    在B里面,循环之前,输出一下matches.Count.你不设断点的时候很可能matches根本没准备好,这样的话,你的循环不会有任何输出.
      

  4.   


    同意,很可能matches还为空呢,就执行到foreach了~~ 
      

  5.   


    MatchCollection matches = rr.Matches(m.Value);
    foreach (Match match in matches)
                {
                    代码,输出一些东西;
                }
    我尝试把Thread.Sleep(0);加在foreach 上面,也不行,偶尔能输出一个或者两个结果(断点看到的结果有50个)
      

  6.   

    放到内部。sleep大于0 搞定。多谢多谢!