Hallo,
wie kann ich den Programmablauf warten lassen, bis alle Threads aus dem Threadpool beendet sind?
--> Ich habe etwas über CountdownEvent gelesen aber ich hab nicht verstanden wie ich es imlementieren kann.
Einen zweiten Versuch mit TPL habe ich noch versucht:
--> Hier wird zwar gewartet, dafür blockiert währenddessen aber auch die UI !?
Grüße.
wie kann ich den Programmablauf warten lassen, bis alle Threads aus dem Threadpool beendet sind?
VB.NET-Quellcode
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim myStruct As structInput
- For Each row As DataRow In dt.Rows
- myStruct = New structInput
- ...
- Dim w As Threading.WaitCallback = New Threading.WaitCallback(AddressOf bgw_DoWork)
- Threading.ThreadPool.QueueUserWorkItem(w, myStruct)
- Next
- '--> Dieser Code sollte erst ausgeführt werden, wenn alle Threads beendet wurden
- '--> Wird aber sofort ausgeführt
- End Sub
--> Ich habe etwas über CountdownEvent gelesen aber ich hab nicht verstanden wie ich es imlementieren kann.
Einen zweiten Versuch mit TPL habe ich noch versucht:
VB.NET-Quellcode
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim myStruct As structInput
- Dim taskArray(dt.Rows.Count - 1) As Task
- For Each row As DataRow In dt.Rows
- myStruct = New structInput
- ...
- taskArray(i) = Task.Factory.StartNew(Sub() bgw_DoWork(myStruct))
- i += 1
- Next
- Task.WaitAll(taskArray)
- '--> Dieser Code sollte erst ausgeführt werden, wenn alle Threads beendet wurden
- End Sub
--> Hier wird zwar gewartet, dafür blockiert währenddessen aber auch die UI !?
Grüße.