Как l oop n (от 2 до бесконечности) умножить список длинных задач (от 10 до 10000)?
Я новичок в VB. Net и хотел бы l oop через список длинных задач во время работы консольного приложения.
Мой код пока зацикливает список потоков только один раз.
Вывод:
L oop 1
L oop 2
L oop 3
1 - zzz для 939 до: ...
0 - zzz для 1045 до: ...
3 - zzz ...
4 - zzz ...
2 - zzz ...
...
10 - zzz
9 - zzz
Private threadList As List(Of Thread) = New List(Of Thread)
Private sourceList As List(Of String) = New List(Of String)
Private MaxThreads As Integer = 3
Private th As Thread
Private status As Boolean = True
Private lockers As Object = New Object
Sub Main()
For x = 1 To 3
Console.WriteLine("Loop " + x.ToString)
LoadSource(10)
For i As Integer = 1 To MaxThreads
th = New Thread(New ThreadStart(AddressOf LongTask))
th.IsBackground = False
threadList.Add(th)
th.Start()
Next i
Next
Console.ReadKey()
End Sub
Private Sub LongTask()
Dim id As String = String.Empty
Dim Generator As System.Random = New System.Random()
Dim RandomInt As Integer
While status = True
If sourceList.Count = 0 Then
status = False
Else
Try
SyncLock lockers
id = sourceList(0)
sourceList.RemoveAt(0)
End SyncLock
RandomInt = Generator.Next(800, 1600)
Threading.Thread.Sleep(RandomInt)
Console.WriteLine(id + " - zzz for " + RandomInt.ToString + " until: " + Format(Now, "hh:mm:ss.ffff" + " | "))
Catch ex As Exception
Console.WriteLine(ex)
End Try
End If
End While
End Sub
Private Sub LoadSource(val As Integer)
For i As Integer = 0 To val
sourceList.Add(i)
Next
End Sub