Empiezo algunas tareas paralelas, así:
var tasks =
Enumerable.Range(1, 500)
.Select(i => Task.Factory.StartNew<int>(ProduceSomeMagicIntValue))
.ToArray();
y luego unirlos con
Task.WaitAll(tasks);
En esta última línea me sale un garabato azul debajo de tasks
con un mensaje de advertencia:
Co-variant array conversion from Task[] to Task[] can cause run-time exception on write operation.
Entiendo por qué recibo este mensaje, pero ¿hay alguna forma de evitarlo? (por ejemplo, como una versión genérica de Task.WaitAll()
?)
3 votos
En este caso, la conversión es segura, porque
WaitAll()
no escribirá en la matriz. ¿Hay alguna razón por la que quiera evitarlo?17 votos
Además, .Net 4.5 contendrá
Task.WhenAll()
que devuelve un únicoTask
que se completa cuando todos losTask
s de la colección completa. Y también tiene una versión genérica y funciona en cualquierIEnumerable<T>
deTask
s.0 votos
@svick gracias por el consejo. parece que han cambiado el nombre de lo que estás hablando a WhenAll por lo que sólo puede decir 'await Task.WhenAll(task1, task2);'
0 votos
¿hay alguna posibilidad de que considere aceptar una respuesta diferente? Personalmente encontré otras más dignas que la que has elegido como "aceptada".
1 votos
@Quibblesome Hecho.