首页 > 解决方案 > 如何在vb.net中循环n次线程列表

问题描述

如何循环n(2到无限)次长任务列表(10到10000)?
我是 VB.Net 的新手,想在控制台应用程序运行时循环执行长任务列表。
到目前为止,我的代码只循环线程列表一次。

输出:
Loop 1
Loop 2
Loop 3
1 - zzz for 939 until: ...
0 - zzz for 1045 until: ...
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

标签: vb.netmultithreadingthread-safety

解决方案


推荐阅读