6
8

More than 3 years have passed since last update.

VB.NET 並列処理 コピペ用 サンプルコード チートシート

Last updated at Posted at 2020-07-06

このまま動作します。
コピぺ、編集して利用するためのコードの断片です。
自由に使って頂いて構いません。

パターン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
)

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8