2010-09-21 19 views
191

Sto trasferendo un codice a Parallel.ForEach e ho ricevuto un errore con un continue che ho nel codice. C'è qualcosa di equivalente che posso usare in un Parallel.ForEach funzionalmente equivalente a continue in un ciclo foreach?Esiste un equivalente a "continua" in Parallel.ForEach?

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

risposta

313
return; 

(il corpo è solo una funzione chiamata per ogni elemento)

17

Quando convertito il ciclo in una definizione compatibile per la logica Parallel.ForEach, è finito per fare del corpo un comunicato lambda. Bene, questa è un'azione che viene chiamata dalla funzione Parallela.

Quindi, sostituire continue con return e interrompere con Stop() o Break() dichiarazioni.

+1

Una possibile opzione migliore rispetto alla sostituzione di interruzioni con istruzioni di ritorno è ParallelLoopState's Stop() e Break(). http://blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx – JasonCoder

+0

@JasonCoder nessuno di questi è equivalente a 'continue'. – will

+1

@will correct, ecco perché ho detto pause. le dichiarazioni di reso sostituiscono le dichiarazioni continue – JasonCoder

Problemi correlati