У меня есть 3 потока, которые вызывается внутри цикла.Как приостановить цикл во время многопоточности
For i As Integer = 0 To DG.Rows.Count - 1
Dim thread1 = New System.Threading.Thread(AddressOf processData)
Dim thread2 = New System.Threading.Thread(AddressOf processData2)
Dim thread3 = New System.Threading.Thread(AddressOf processData3)
If Not thread1.IsAlive Then
x1 = i
thread1.Start()
ElseIf Not thread2.IsAlive Then
x2 = i
thread2.Start()
ElseIf Not thread3.IsAlive Then
x3 = i
thread3.Start()
End If
Next
Как приостановить цикл, пока все потоки живы? Я хочу, если один из потоков заканчивается, продолжите цикл и получите (i), а затем снова приостановите цикл, если нет доступных потоков. Потому что иногда предметы DG.Rows больше 3.
Вы хотите, чтобы вы использовали три потока для обработки строк, так что строки 0, 3, 6 и т. Д. Обрабатываются 'processData', а строки 1, 4, 7 и т. Д. Обрабатываются' processData2 'и строки 2, 5, 8 и т. д.' processData3', но только три строки за раз? – Enigmativity
Я хочу обрабатывать 3 данных одновременно и цикл паузы while thread1, thread2, thread3 занят, а затем продолжить цикл, если существует доступный поток –
Это еще не ясно. Как вы распределяете каждую строку для каждого метода обработки? – Enigmativity