Tengo un método que devuelve IEnumerable<string>
que, por supuesto, se está manejando con yield return <string>;
. Quiero tener múltiples hilos procesando el resultado de esto, por supuesto, sin repetirlo y sin hilos. ¿Cómo lograría esto?¿Cómo hacer que varios hilos procesen el mismo resultado de IEnumerable?
var result = GetFiles(source);
for (int i = 0; i < Environment.ProcessorCount; i++)
{
tasks.Add(Task.Factory.StartNew(() => { ProcessCopy(result); }));
}
Task.WaitAll(tasks.ToArray());
Sin embargo esto parece ser la producción de repeticiones:
C:\Users\esac\Pictures\2000-06\DSC_1834.JPG
C:\Users\esac\Pictures\2000-06\DSC_1835.JPG
C:\Users\esac\Pictures\2000-06\.picasa.ini
C:\Users\esac\Pictures\2000-06\DSC_1834.JPG
C:\Users\esac\Pictures\2000-06\DSC_1835.JPG
C:\Users\esac\Pictures\2000-06\.picasa.ini
C:\Users\esac\Pictures\2000-06\DSC_1834.JPG
C:\Users\esac\Pictures\2000-06\DSC_1835.JPG
C:\Users\esac\Pictures\2000-06\.picasa.ini
C:\Users\esac\Pictures\2000-06\DSC_1834.JPG
C:\Users\esac\Pictures\2000-06\DSC_1835.JPG
Bien, eso funcionó para mí. – esac
+1 para la mejor solución del problema ;-) – BrokenGlass