Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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_For Loop - Fatal编程技术网

vb.net中循环的多线程

vb.net中循环的多线程,vb.net,multithreading,for-loop,Vb.net,Multithreading,For Loop,我正在使用VB.net通过交互来帮助求解一些方程。使用一个线程需要很长时间,所以我希望有人能帮助我多线程处理代码。下面是一个我试图实现的过于简化的例子 公开课表格1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim Evens(6) As Integer Dim Odds(6) As Integer For i = 0 T

我正在使用VB.net通过交互来帮助求解一些方程。使用一个线程需要很长时间,所以我希望有人能帮助我多线程处理代码。下面是一个我试图实现的过于简化的例子

公开课表格1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim Evens(6) As Integer
    Dim Odds(6) As Integer

    For i = 0 To 6
        Evens(i) = i * 2
        Odds(i) = i * 2 + 1
    Next

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Evens = RunLoop(Evens, 0, 6)    'The best way to Multi thread this part please.
    Odds = RunLoop(Odds, 0, 6)
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    For i = 0 To 6
        TextBox1.AppendText(Evens(i) & vbNewLine)
        TextBox1.AppendText(Odds(i) & vbNewLine)
    Next


End Sub

Private Function RunLoop(Numbers() As Integer, Start As Integer, Last As Integer)

    For i = Start To Last
        Numbers(i) *= Numbers(i)
    Next

    Return Numbers

End Function
末级

我需要将过去的数据返回到主线程,这样我就可以比较每个线程的结果。我已经为需要从函数返回的数据创建了一个类


在每个for循环中花费的时间可以是不同的长度。

您可以并行运行它们,只需注意执行的顺序并不重要。这个循环只保证迭代中的每一项都会完成,它们不会以任何特定的顺序发生

要用代码实现这一点,只需进行以下更改:

Private Function RunLoop(Numbers() As Integer, Start As Integer, Last As Integer)

    'For i = Start To Last
    '    Numbers(i) *= Numbers(i)
    'Next

    'Run every iteration in the loop in parallel:
    Parallel.For(Start, Last + 1, Sub(i) Numbers(i) *= Numbers(i))

    Return Numbers

End Function
检查