vb.net - 如何在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
解决方案
推荐阅读
- bash - 为什么 >/dev/null 不能按预期工作?
- javascript - 如何在 React Redux 中获取特定的状态值?
- pine-script - 如何在 Pine Script 中设置标签位置,使其在线而不是高于或低于它?
- swift - CLLocationManager 的 Swift 线程问题
- c - 32 位机器上“双”结构成员的填充逻辑
- android - Android - 从另一个片段内的回收器视图调用片段
- python - 如何将数据帧传递给函数(提高代码效率)
- javascript - 每次单击图像时,我都会收到“未捕获的类型错误:无法读取未定义的属性‘切换’”
- react-native - 如何在 react-native-web 中的屏幕之间导航
- javascript - 如何检查日期是否包含在假期中?