このまま動作します。
コピぺ、編集して利用するためのコードの断片です。
自由に使って頂いて構いません。
#パターン1 - インデックス0から9までの並列処理
Imports System
Imports System.Threading.Tasks
' インデックス0から9までの並列処理。
Parallel.For(0, 10,
Sub(i)
Console.WriteLine(i.ToString())
End Sub
)
' 全ての並列処理が完了したら、処理がこの先へ進む。
#パターン2 - リストの内容で並列処理
Imports System
Imports System.Threading.Tasks
' リストの内容で並列処理。
Dim l = New List(Of String) From {"a", "b", "c"}
Parallel.ForEach(l,
Sub(s)
Console.WriteLine(s)
End Sub
)
' 全ての並列処理が完了したら、処理がこの先へ進む。
#パターン3 - 繰り返しを使わない並列処理
Imports System
Imports System.Threading.Tasks
' 繰り返しを使わない並列処理。
' ここでは4つの処理を並列化しているが、処理数は自由。
Parallel.Invoke(
Sub()
Console.WriteLine("a")
End Sub,
Sub()
Console.WriteLine("b")
End Sub,
Sub()
Console.WriteLine("c")
End Sub,
Sub()
Console.WriteLine("d")
End Sub
)
'全ての並列処理が完了したら、処理がこの先へ進む。
#パターン4 - 並列処理を立ち上げる
Imports System
Imports System.Threading.Tasks
' 並列処理を立ち上げる。
Task.Run(
Sub()
Console.WriteLine("a")
End Sub
)
' 処理の終了を待たずに、処理がこの先へ進む。
#パターン5 - 並列処理を立ち上げて、処理の終了を待ち合わせる
Imports System
Imports System.Threading.Tasks
' 並列処理を立ち上げる。
Dim t = Task.Run(
Sub()
Console.WriteLine("a")
End Sub
)
Console.WriteLine("b")
' 処理の終了を待ち合わせる所でこうする。
t.Wait()
#注意事項 - 並列処理内の例外は呼び出し元でキャッチされない
Imports System
Imports System.Threading.Tasks
Task.Run(
Sub()
' 並列処理内で送出された例外は呼び出し元でキャッチされない。
' このように、並列処理内で対処すると良い。
Try
Console.WriteLine("a")
Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try
End Sub
)