Parallel.For(0, r1.LastCol, (i, loopState) =>
            {                var item = myType.GetProperty(r1.getText(0, i));
                if (item == null)
                {
                    loopState.Stop();
                    break;
                }
  if (item.Name.Contains("比例"))
                    {
http://msdn.microsoft.com/zh-cn/library/dd460721.aspx

解决方案 »

  1.   

    Parallel.For(0, r1.LastCol, (i, loopState) =>
                {                var item = myType.GetProperty(r1.getText(0, i));
                    if (item == null)
                    {
                        loopState.Stop();
                        return; //写错了 - -!
                    }
      if (item.Name.Contains("比例"))
                        {
      

  2.   

    我要的是 continue效果.不是break效果哦.我要的是 continue效果.不是break效果哦.
      

  3.   

    跳过当次循环.
    不是退出循环.
    return; 更不行.已是退出方法了.
      

  4.   

    Parallel.For是并行操作,不是顺序循环,所以那个continue或break是不会有任何效果的。这就好比你开了多个线程,对其中一个线程结束,其它线程照样在for循环你的数组。
      

  5.   

     Parallel.For(0, r1.LastCol, (i, loopState) =>
                {                var item = myType.GetProperty(r1.getText(0, i));
                    if (item != null && item.Name.Contains("比例"))
                        
    这样不行吗? 
      

  6.   

    你根本就瞎用Parallel.ForParallel.For会为每个迭代开一个任务。你这么写,性能只会非常低。你得用Parallel.For做一个粗粒度的分割,再在内部使用For
    Parallel.For(0, r1.LastCol % 4 == 0 ? 4 : 5 , (i, loopState) =>
    {
        for (int j = i * r1.LastCol / 4; j < (i + 1) * r1.LastCol / 4; j++)
        {
            ...
        }
    });如果你希望中断循环,可以使用一个共享变量
    stop = false;
    Parallel.For(0, r1.LastCol % 4 == 0 ? 4 : 5 , (i, loopState) =>
    {
        for (int j = i * r1.LastCol / 4; j < (i + 1) * r1.LastCol / 4 && !stop; j++)
        {
            ...
            if (...) stop = true;
        }
    });
      

  7.   

    Parallel.For
    这个是多线程啊又不是一个线程内进行for循环。。你的break,continue什么的怎么可能起作用另外如果像#8楼说的那样控制,那stop = false;这个要通过那个InterLock类似的方法来进行线程间安全控制