我使用VB.net通过对它们进行交互来帮助解决一些方程式。使用一个线程需要很长时间,所以我希望有人可以帮我多线程代码。这是我想要实现的简化示例。
Public Class Form1
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循环的花费时间可以不同。
答案 0 :(得分:0)
您可以使用Parallel For Loop并行运行它们,只需要注意订单执行顺序并不重要。这个循环只保证迭代中的每个项都会完成,它们不会以任何特定的顺序发生......
要使用您的代码实现该功能,您只需进行以下更改:
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