Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何将参数传递给任务(异步多线程)?_Vb.net_Multithreading_Async Await - Fatal编程技术网

Vb.net 如何将参数传递给任务(异步多线程)?

Vb.net 如何将参数传递给任务(异步多线程)?,vb.net,multithreading,async-await,Vb.net,Multithreading,Async Await,我想我是在遵循答案,但这一切都有点错误-我只是似乎把数字5传递给了每一个线程 我做错了什么?调用sub后,参数值是否应该固定 Public Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim ji As Integer, tasks As New List(Of Task)() For ji = 0 To 4 tasks.Add(Task.Run(

我想我是在遵循答案,但这一切都有点错误-我只是似乎把数字5传递给了每一个线程

我做错了什么?调用sub后,参数值是否应该固定

Public Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim ji As Integer, tasks As New List(Of Task)()

    For ji = 0 To 4
        tasks.Add(Task.Run(Sub() findPageCount(ji)))
    Next

    Await Task.WhenAll(tasks)
end sub

Sub findPageCount(ByVal iAmThread As Integer)

    Debug.Print("I am thread " & iAmThread)

    '...lots more stuff...

end sub

这可能与任务或多线程无关-只是lambda捕获的是一个变量,而不是一个值。@Stephen点击它。这应该可以解决您的问题:
dim hij=ji
Task.Run(Sub()findPageCount(hij)
@StephenCleary,这很有效,我想我明白为什么。有什么地方我可以读到,因为我以前没有听说过lambda,但假设它与异步创建的新线程有关吗?@MartinKS:不,它与线程或异步无关。你可以读更多。