2010-09-21 5 views
191

Je porte un code à Parallel.ForEach et j'ai une erreur avec un continue que j'ai dans le code. Y at-il quelque chose d'équivalent que je peux utiliser dans un Parallel.ForEach fonctionnellement équivalent à continue dans une boucle foreach?Existe-t-il un équivalent de 'continuer' dans un Parallel.ForEach?

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

Répondre

313
return; 

(le corps est juste une fonction appelée pour chaque élément)

17

Lorsque vous avez converti votre boucle dans une définition compatible pour la logique Parallel.Foreach, vous avez fini par faire l'un corps de déclaration lambda. Eh bien, c'est une action qui est appelée par la fonction Parallèle. Par conséquent, remplacez continue par return et rompez avec les instructions Stop() ou Break().

+1

Les options Stop() et Break() de ParallelLoopState constituent une meilleure option que le remplacement des ruptures par des instructions de retour. http://blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx – JasonCoder

+0

@JasonCoder aucun d'entre eux n'est équivalent à 'continuer'. – will

+1

@ va corriger, c'est pourquoi j'ai dit des pauses. les instructions return remplacent les instructions continues – JasonCoder

Questions connexes