【问题标题】:How to create a dynamic number of threads?如何创建动态线程数?
【发布时间】:2012-05-09 19:06:55
【问题描述】:

目前我通过以下方式创建线程(正常方式)

Public loginThread As Thread
Public loginThreadStart As New ThreadStart(AddressOf LogIntoWhatever)
Public callLoggedIn As New MethodInvoker(AddressOf loggedIn)

但是,我想要做的是类似的事情(这显然行不通,并且完全是伪代码)

dim i as integer = 0
for i = 0 to i = 25
Public loginThread(i) as Thread
Public loginThreadStart(i) as New ThreadStart(AddressOf LogIntoWhatever)
next i
Public callLoggedIn as new MethodInvoker(AddressOf loggedIn)

我可以将 25 更改为我想要的任何值并创建该数量的线程。他们都将运行一个相同的子程序,该子程序不会相互调用任何类型,他们不需要彼此了解。这样的事情可能吗?如果是这样,找到解决方案的方向会有所帮助。

提前致谢。

【问题讨论】:

    标签: vb.net multithreading


    【解决方案1】:

    试试下面的

    Public Function RunThreads(count as Integer, start As ThreadStart) As List(Of Thread)
      Dim list as New List(Of Thread)
      For i = 0 to count -1 
        Dim thread = new Thread(start)
        thread.Start()
        list.Add(thread)
      Next
      Return list
    End Function
    

    或者使用线程池

    Public Sub RunThreads(count as Integer, callBack as WaitCallBack) 
      For i = 0 To count-1
        ThreadPool.QueueUserWorkItem(callBack)
      Next
    End Sub
    

    【讨论】:

    • 不幸的是,“返回线程”出现错误。 'Thread' 是一种类型,不能用作表达式。
    • 更改了返回列表,现在按预期工作。谢谢!
    猜你喜欢
    • 2012-06-25
    • 2012-04-22
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多