Как l oop n раз список тем в vb.net - PullRequest
0 голосов
/ 28 апреля 2020

Как 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
...