Sto utilizzando TPL nel mio progetto corrente e utilizzo Parallel.Foreach per far girare molti thread. La classe Task contiene Wait() per attendere che l'attività venga completata. In questo modo, come posso aspettare che Parallel.ForEach sia completato e poi andare all'esecuzione delle prossime dichiarazioni?Come posso attendere fino al completamento di Parallel.ForEach
78
A
risposta
132
Non devi fare nulla di speciale, Parallel.Foreach()
attenderà fino a quando tutte le sue attività ramificate sono complete. Dal thread chiamante puoi trattarlo come una singola istruzione sincrona e, ad esempio, racchiuderlo all'interno di un try/catch.
11
Non è necessario con Parallel.Foreach: esegue solo il foreach in quante thread sono disponibili i processori, ma restituisce in modo sincrono.
Maggiori informazioni possono essere trovate here
+9
Il numero (massimo) di thread che utilizza non è così semplice. –
Problemi correlati
- 1. Come posso attendere fino al completamento di un'animazione incorporata di UITableView?
- 2. Attendere fino al termine Application.Calculate
- 3. Come aspettare fino al completamento di SwingWorker?
- 4. Come forzare un programma ad attendere fino al completamento di una richiesta HTTP in JavaScript?
- 5. QML: attendere fino al termine delle animazioni
- 6. Attendere fino al completamento di più processi da riga di comando?
- 7. Come attendere nello script bash fino al completamento della creazione dell'istanza AWS
- 8. attendere il processo fino al completamento di tutti i processi secondari?
- 9. Come posso limitare Parallel.ForEach?
- 10. Come posso avviare un nuovo processo e attendere fino al termine?
- 11. Come attendere il completamento di un thread in Objective-C
- 12. Caricamento griglia utilizzando le coroutine - attendere fino al termine,
- 13. Eseguire un'applicazione con PowerShell e attendere fino al termine
- 14. Come attendere il completamento del metodo async?
- 15. Come attendere async Osservabile per il completamento
- 16. Come attendere fino Task.ContinueWith compito interiore finisce
- 17. iOS5.1: sincronizzazione delle attività (attendere il completamento)
- 18. È necessario avviare il processo agente e attendere fino al completamento e ottenere esito positivo o negativo
- 19. Robotium: come posso attendere il completamento del caricamento prima di procedere?
- 20. Come ottenere jQuery per attendere fino al termine di un effetto?
- 21. Attendere fino a quando un accumulo Jenkins è completo
- 22. Blocco Javascript fino al completamento del precaricamento dell'immagine?
- 23. Come attendere il completamento di un processo usando tcl-expect
- 24. Concatenamento attività (attendere il completamento dell'attività precedente)
- 25. jquery differita - attendere fino a due chiamate completa
- 26. Node.JS async.parallel non attende fino al completamento di tutte le attività
- 27. WebRat + Selenium WebDriver: attendere il completamento di ajax
- 28. thread Android attendere fino a visibile
- 29. Come attendere il completamento del thread prima di continuare?
- 30. Come attendere il completamento di attività asincrone in scala?
"Parallel.ForEach() attenderà fino a quando tutti i suoi compiti ramificati sono complete" può essere confuso in qualche situazione, come (attività asincrone all'interno): Parallel.ForEach (groupedUnreadMessages, async unreadMsgCollection => {/ * works * /}); –
qui ci sono altri problemi nello stackoverflow: http://stackoverflow.com/questions/11564506/nesting-await-in-parallell-foreach –
Questa risposta è del 2011, prima di async/await. Ma come ho detto, generare thread all'interno di ForEach non è una buona idea. Né è un'azione asincrona. I link che hai pubblicato forniscono buone informazioni e soluzioni. –