2010-09-21 19 views
191

Estoy portando algún código a Parallel.ForEach y obtuve un error con un continue que tengo en el código. ¿Hay algo equivalente que pueda usar en un Parallel.ForEach funcionalmente equivalente a continue en un bucle foreach?¿Hay un equivalente a 'continuar' en un Parallel.ForEach?

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

Respuesta

313
return; 

(el cuerpo es sólo una función llamada para cada elemento)

17

Cuando convertido su bucle en una definición compatible para la lógica Parallel.Foreach, que terminó haciendo que el cuerpo de la declaración de una lambda. Bueno, esa es una acción a la que llama la función Paralelo.

Por lo tanto, reemplace continue con return, y rompa con Stop() o Break() declaraciones.

+1

Una posible mejor opción que reemplazar descansos con declaraciones de devolución es ParallelLoopState's Stop() y Break(). http://blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx – JasonCoder

+0

@JasonCoder ninguno de ellos es equivalente a 'continuar' sin embargo. – will

+1

@corregiré, razón por la cual dije pausas. las declaraciones de devolución sí reemplazan las declaraciones continuas – JasonCoder

Cuestiones relacionadas