none
Parallel.ForEach innerhalb eines TPL-Tasks RRS feed

  • 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

    Dienstag, 22. August 2017 10:32

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


    Dienstag, 22. August 2017 11:06

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


    Dienstag, 22. August 2017 11:06
  • Hi Peter,

    vielen Dank - das hilft mir sehr weiter.

    Viele Grüße

    Michael

    Dienstag, 22. August 2017 11:17