Benutzer mit den meisten Antworten
Parallel.ForEach innerhalb eines TPL-Tasks

Frage
-
Hallo zusammen,
ich beschäftige mich im Moment mit der asynchronen Programmierung, um länger andauernde Aktionen im Hintergrund ausführen zu lassen.
Das betrifft unter anderem die Abarbeitung aller Elemente einer Liste. Ich könnte diese Verarbeitung jetzt in einen eigenen Task auslagern:
Dim t As Task = New Task(Sub() For Each Item As myClass In myCollection ... Next End Sub)
Oder die Elemente der Liste werden parallel abgearbeitet:
Parallel.ForEach(myCollection, Sub(x As myClass) .... End Sub)
Kann ich den Hintergrund-Task weiter beschleunigen, wenn ich beides kombiniere oder ist das keine gute Lösung?
Dim t As Task = New Task(Sub() Parallel.ForEach(myCollection, Sub(x As myClass) .... End Sub) End Sub)
Vielen Dank und viele Grüße
Michael
Antworten
-
Hi Michael,
natürlich kannst Du durch Nutzung beider Techniken die Bearbeitung beschleunigen, da mit New Task nur ein Thread parallel läuft, mit Parallel.ForEach aber weitere Threads parallel arbeiten.Wichtig bei der ganzen Sache ist aber, dass die Elemente der Auflistung auch parallel verarbeitet werden dürfen, und, dass der Haupt-Thread auch entlastet werden muss.
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort markiert Bayer, Michael Dienstag, 22. August 2017 11:17
- Bearbeitet Peter Fleischer Dienstag, 22. August 2017 11:22
Alle Antworten
-
Hi Michael,
natürlich kannst Du durch Nutzung beider Techniken die Bearbeitung beschleunigen, da mit New Task nur ein Thread parallel läuft, mit Parallel.ForEach aber weitere Threads parallel arbeiten.Wichtig bei der ganzen Sache ist aber, dass die Elemente der Auflistung auch parallel verarbeitet werden dürfen, und, dass der Haupt-Thread auch entlastet werden muss.
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort markiert Bayer, Michael Dienstag, 22. August 2017 11:17
- Bearbeitet Peter Fleischer Dienstag, 22. August 2017 11:22