Parallel.ForEach에 'continue'과 같은 것이 있습니까?


249

일부 코드를 포팅하고 있으며 코드에 Parallel.ForEach오류가 continue있습니다. 루프 에서 Parallel.ForEach와 기능적으로 동등한 기능을 사용할 수 있습니까?continueforeach

Parallel.ForEach(items, parallelOptions, item =>
{
    if (!isTrue)
        continue;
});

답변:


414
return;

(본문은 각 항목에 대해 호출 된 기능 일뿐입니다)


23

루프를 Parallel.Foreach 논리에 대한 호환 가능한 정의로 변환하면 명령문 본문을 람다로 만들었습니다. 이것은 병렬 함수에 의해 호출되는 동작입니다.

그래서, 교체 continuereturn, 그리고 함께 휴식 Stop()또는 Break()문.


1
나누기를 return 문으로 바꾸는 것보다 더 나은 옵션은 ParallelLoopState의 Stop () 및 Break ()입니다. blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx
JasonCoder

@JasonCoder 이들 중 어느 것도 동일하지 continue않습니다.
됩니다

1
@는 올바른 것이므로 내가 휴식을 취한 이유입니다. return 문은 continue 문을 대체합니다
JasonCoder

@JasonCoder-아. 네가 무슨 뜻인지 오해 했어
됩니다

-1

계속하려면 나머지 블록을 건너 뛰고 다음 항목으로 이동하십시오. 따라서 블록의 나머지 부분에 반대 조건을 적용하여 계속을 구현할 수 있습니다.

예를 들어 질문의 코드는 다음과 같이 다시 작성됩니다.

Parallel.ForEach(items, parallelOptions, item =>
{
    //Skip an item by applying the opposite condition used for continue on all items until the end of the foreach

    if (isTrue) 
    {
      //Do what you want to do for all items
    }

});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.