gpt4 book ai didi

vb.net - 以前的线程完成后,如何启动新线程?

转载 作者:行者123 更新时间:2023-12-03 13:22:22 26 4
gpt4 key购买 nike

我必须开发Windows服务,它将文件复制到不同的服务器。
因此,我必须使用多头处理来完成此任务。
但是我只需要启动3-4个线程。
因此,每当一个线程完成时,我就必须启动新线程,以便线程数应保持为3或4。
那么我该如何申请支票?
请提供一些信息。

最佳答案

这可能会为您提供一个起点。想法是使用阻塞队列,该队列将在出队操作上阻塞,直到有可用项为止。因此,您的工作线程将绕无限循环旋转,以等待项目出现在队列中。您的主线程将把这些项目排入队列。下面的示例使用.NET 4.0 BCL中的BlockingCollection类。如果那对您不可用,则可以从Stephen Toub's blog获得阻塞队列的实现。

Module Example

Private m_Queue As BlockingCollection(Of String) = New BlockingCollection(Of String)

Sub Main()

Dim threads(4) As Thread
For i As Integer = 0 To threads.Length - 1
threads(i) = New Thread(AddressOf Consumer)
threads(i).IsBackground = True
threads(i).Start()
Next

Dim files As IEnumerable(Of String) = GetFilesToCopy()

For Each filePath As String In files
m_Queue.Add(filePath)
Next

End Sub

Sub Consumer()
Do While True
Dim filePath As String = m_Queue.Take()
' Process the file here.
Loop
End Sub

End Module

关于vb.net - 以前的线程完成后,如何启动新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com