gpt4 book ai didi

vb.net - vb中的参数线程

转载 作者:行者123 更新时间:2023-12-02 09:56:03 24 4
gpt4 key购买 nike

首先,我对vb中的线程没有很好的理解,我试图获取有关它的信息,但我仍然对它的工作原理、地址、正确的实现等等感到困惑。我想问如何使用参数创建一个新线程,以便我从主线程传递一个值。我尝试做一个循环,每个循环创建一个新线程并执行 ping 操作。下面是我的代码:

For i = 10 To 50
Dim worker As New Thread(New ThreadStart(Function()
My.Computer.Network.Ping("192.168.1." & i)
Console.WriteLine("192.168.1." & i)
End Function))
worker.Start()
Next

我意识到这是错误的,因为结果将循环并 ping 变量 i 的最后一个值。所以我想问一下关于它的正确建议。如果您为我添加一个简单的解释以便更好地理解线程,我将非常感激。

提前谢谢

最佳答案

您的代码几乎是正确的。但是,由于您对所有创建的线程使用相同的变量。因此,当你的线程启动时,它或多或少包含一个指向 i 的指针,而不是 i 的值。这意味着随着循环的进行, i 的值会发生变化。因此,当您的线程实际开始工作时,循环已完成并且 i 的值已更改为 51。

要解决此问题,您必须在循环内创建一个新整数。这样提供的对象对于每个循环都是唯一的。就像这样:

Dim x as Integer = i

然后向线程提供 x 而不是 i,一切就都准备好了。

以下是有关该主题的一些阅读内容: https://devblogs.microsoft.com/vbteam/closures-in-vb-part-5-looping/

关于vb.net - vb中的参数线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187839/

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