Estoy usando TPL en mi proyecto actual y usando Parallel.Foreach para hacer girar varios hilos. La clase Tarea contiene Esperar() para esperar hasta que la tarea se complete. De esa manera, ¿cómo puedo esperar para que se complete Parallel.ForEach y luego entrar en la siguiente declaración?¿Cómo puedo esperar hasta que el Parallel.ForEach complete
78
A
Respuesta
132
No tiene que hacer nada especial, Parallel.Foreach()
esperará hasta que se completen todas las tareas ramificadas. Desde el hilo de llamada, puede tratarlo como una sola declaración sincrónica y, por ejemplo, envolverlo dentro de un try/catch.
11
No lo necesita con Parallel.Foreach: solo ejecuta el foreach en tantos subprocesos como haya procesadores disponibles, pero se devuelve sincrónicamente.
Más información se puede encontrar here
+9
El número (máximo) de subprocesos que utiliza no es tan simple. –
Cuestiones relacionadas
- 1. En WatiN cómo esperar hasta que se complete la devolución de datos
- 2. Cómo forzar a un programa a esperar hasta que se complete una solicitud HTTP en JavaScript?
- 3. WebBrowser.Print() espera hasta que se complete. .NET
- 4. esperar hasta que un proceso termina
- 5. Cómo esperar hasta que esté conectado el depurador .NET remoto
- 6. Cómo esperar hasta que se cierre el archivo
- 7. ¿Cuál es la ventaja de usar dispatch_sync si tiene que esperar hasta que se complete el hilo principal?
- 8. ¿Esperar hasta que una condición sea verdadera?
- 9. Android Animation: ¿esperar hasta que termine?
- 10. ¿Cómo puedo limitar Parallel.ForEach?
- 11. Esperar hasta que el jQueryanimation para completar dentro de bucle
- 12. ¿Cómo esperar hasta que WebBrowser esté completamente cargado en VB.NET?
- 13. ¿Cómo esperar hasta que exista un elemento para dojo?
- 14. Esperando hasta que se complete un proceso externo
- 15. ¿Cómo forzar a FileSystemWatcher a esperar hasta que se descargue el archivo?
- 16. jQuery Añadir archivo CSS y esperar hasta que se cargue?
- 17. ¿Cómo esperar a que se complete el hilo antes de continuar?
- 18. X11: ¿esperar hasta que se vea una ventana?
- 19. ¿Cómo puedo esperar que haya terminado el modo interactivo?
- 20. Parallel.ForEach lento que el ParaCada
- 21. Esperar hasta que las roscas niño completado: Java Descripción
- 22. JOptionPane.showMessageDialog ¿esperar hasta que se haga clic en Aceptar?
- 23. ¿Cómo puedo bloquear hasta que se resuelva Dojo Deferred?
- 24. ¿Cómo puedo recopilar valores devueltos de Parallel.ForEach?
- 25. Esperando que se complete el comando en C#
- 26. C++/Win32: ¿Cómo esperar a que se complete una eliminación pendiente?
- 27. ¿Detener el archivo por lotes hasta que se complete la parada del servicio?
- 28. ¿Cómo NO esperar a que se complete un proceso en un script por lotes?
- 29. Bash: Utilizar while o hasta esperar hasta que no exista un PID
- 30. Espere a que QueueUserWorkItem complete
"Parallel.Foreach() esperará hasta que todas sus tareas son ramificados completa" se puede confundir en alguna situación, como (tarea asíncrona dentro): Parallel.ForEach (groupedUnreadMessages, async unreadMsgCollection => {/ * works * /}); –
aquí hay otros problemas en stackoverflow: http://stackoverflow.com/questions/11564506/nesting-await-in-parallell-foreach –
Esta respuesta es de 2011, antes de async/await. Pero como dije, los hilos de generación dentro del ForEach no son una buena idea. Tampoco es una acción asíncrona. Los enlaces que publicó brindan buena información y soluciones. –