Vb.net 使用线程数限制线程并使用参数执行proc

Vb.net 使用线程数限制线程并使用参数执行proc,vb.net,multithreading,parameters,Vb.net,Multithreading,Parameters,我试图做的是,创建一个执行某些操作的应用程序。最多应运行10个线程 我有下面的代码,可以正常工作。我需要向“Somework”过程发送一个参数。我该怎么做 Module Module1 Sub Main() Dim Task As New Action(AddressOf SomeWork) dim I as integer for i=1 to 20 If RunningThread < 10 Then

我试图做的是,创建一个执行某些操作的应用程序。最多应运行10个线程

我有下面的代码,可以正常工作。我需要向“Somework”过程发送一个参数。我该怎么做

Module Module1
    Sub Main()
        Dim Task As New Action(AddressOf SomeWork)

        dim I as integer

        for i=1 to 20
        If RunningThread < 10 Then
            Task.BeginInvoke(AddressOf Callback, Nothing)
            Threading.Interlocked.Increment(RunningThread)
        Else
            SyncLock (Lock)
                tasks.Enqueue(Task)
            End SyncLock
        End If
        next

        Console.ReadLine()
    End Sub

    Private tasks As New Queue(Of action)
    Private RunningThread As Integer
    Private Lock As New Object

    Dim I As Integer = 0

    Private Sub SomeWork()
        I += 1
        Console.WriteLine(I & " doing some work - begin :: " & Now.ToString)
        Threading.Thread.Sleep(10000)
        Console.WriteLine(I & " doing some work - end :: " & Now.ToString)
    End Sub

    Private Sub Callback(ByVal o As Object)
        If tasks.Count > 0 Then
            Dim Task As Action
            SyncLock (Lock)
                Task = tasks.Dequeue
            End SyncLock
            Task.BeginInvoke(AddressOf Callback, Nothing)
        Else
            Threading.Interlocked.Decrement(RunningThread)
        End If
    End Sub
End Module
模块1
副标题()
将任务变暗为新操作(某些工作的地址)
作为整数的dim I
对于i=1到20
如果RunningThread<10,则
Task.BeginInvoke(回调地址,无)
线程.联锁.增量(运行线程)
其他的
同步锁(锁)
任务。排队(任务)
端同步
如果结束
下一个
Console.ReadLine()
端接头
作为新队列的专用任务(操作)
私有RunningThread作为整数
作为新对象的私有锁
尺寸I为整数=0
私人分包工程()
I+=1
Console.WriteLine(I&“正在做一些工作-开始::”&Now.ToString)
线程。线程。睡眠(10000)
Console.WriteLine(I&“正在做一些工作-结束::”&Now.ToString)
端接头
私有子回调(ByVal o作为对象)
如果tasks.Count>0,则
把任务当作行动
同步锁(锁)
Task=tasks.Dequeue
端同步
Task.BeginInvoke(回调地址,无)
其他的
螺纹。联锁。减量(螺纹)
如果结束
端接头
端模块
请帮忙


谢谢

您可以使用(TPL)轻松实现您的需求。使用允许您指定参数并将设置为线程限制的构造函数