Tengo un método de extensión para IEnumerable que luego itera a través de la colección, hace su trabajo y luego devuelve un nuevo IEnumerable.devolviendo nulo con PLINQ
He intentado usar PLINQ usando .AsParallel(). ForAll() que acelera significativamente las iteraciones (que por supuesto debería hacer), sin embargo, cuando se devuelve la colección, a menudo hay unos pocos objetos en esa colección que son nulos.
Supongo que esto puede deberse a que devuelve la colección antes de que todos los 'negocios' tengan la oportunidad de completarse? si depuro y pongo un punto de interrupción, no hay nulos.
¿Hay algún tipo de método de "espera que esta operación se complete" que debería estar usando?
EDIT: para ser un poco más claro, hay una lógica de negocios en general, la modificación de propiedades, etc. es necesario tener una acción en bucle, en lugar de simplemente seleccionar algo.
¿Nos puede mostrar un ejemplo de código? –
ParallelEnumerable .ForAll() no devuelve nada (void ForAll (...)), no es un IEnumerable - si usa ForAll, no devuelve un enumerable ... Deberá mostrar código. –
disculpe la ambigüedad. el método devuelve la colección, no el forraje. – benpage