Vb.net 方法没有与委托WaitCallback兼容的签名

Vb.net 方法没有与委托WaitCallback兼容的签名,vb.net,multithreading,Vb.net,Multithreading,我正在尝试启动(这是我第一次)多线程,我编写了下面的代码,但我得到了一个错误: 方法没有与委托兼容的签名 我已经阅读了MSDN指南,并检查了所有参数 错误在哪里 Dim UxThr$, IdLxThr$, NumxThr%, RGxThr%, AxThr% For CThr = 0 To LiTi.getUpperbound(1) UxThr = LiTi(3, CThr) IdLxThr = LiTi(0, CThr) NumxThr = CInt(LiTi(4, CT

我正在尝试启动(这是我第一次)多线程,我编写了下面的代码,但我得到了一个错误:

方法没有与委托兼容的签名

我已经阅读了MSDN指南,并检查了所有参数

错误在哪里

Dim UxThr$, IdLxThr$, NumxThr%, RGxThr%, AxThr%
For CThr = 0 To LiTi.getUpperbound(1)
    UxThr = LiTi(3, CThr)
    IdLxThr = LiTi(0, CThr)
    NumxThr = CInt(LiTi(4, CThr))
    RGxThr = CInt(LiTi(1, CThr))
    AxThr = CInt(LiTi(2, CThr))

    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf ThrP), UxThr, IdLxThr, NumxThr, RGxThr, AxThr)
Next
以下是sub(的地址)的参数:

的签名只接受回调或带有对象的回调。您正在传递许多变量,这就是为什么会出现该错误。创建包含CThr、UxThr、IdLxThr、NumThr等成员的结构或类,并将其单个实例传递给QueueUserWorkItem方法。此外,您需要更改ThrP方法,使其仅包含一个参数(这个新创建的类或结构)

示例代码:

Public Structure YourStructure
    Public UxThr As String
    Public IdLxThr As String
    Public NumxThr As Integer
    Public RGxThr As Integer
    Public AxThr As Integer
End Structure

Public Sub ThrP(ByVal objInput As YourStructure)
    'Work Here
End Sub
然后,问题中的代码变成:

    For CThr = 0 To LiTi.GetUpperBound(1)

        Dim objInput As YourStructure

        objInput.UxThr = LiTi(3, CThr)
        objInput.IdLxThr = LiTi(0, CThr)
        objInput.NumxThr = CInt(LiTi(4, CThr))
        objInput.RGxThr = CInt(LiTi(1, CThr))
        objInput.AxThr = CInt(LiTi(2, CThr))

        ThreadPool.QueueUserWorkItem(AddressOf ThrP, objInput)

    Next
我只是在尝试(我通过了一个数组),但我不认为这是如此愚蠢的事情!也谢谢你的例子,我不知道“结构”:我要学习
    For CThr = 0 To LiTi.GetUpperBound(1)

        Dim objInput As YourStructure

        objInput.UxThr = LiTi(3, CThr)
        objInput.IdLxThr = LiTi(0, CThr)
        objInput.NumxThr = CInt(LiTi(4, CThr))
        objInput.RGxThr = CInt(LiTi(1, CThr))
        objInput.AxThr = CInt(LiTi(2, CThr))

        ThreadPool.QueueUserWorkItem(AddressOf ThrP, objInput)

    Next