Parallel.Invoke メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定された一連のアクションの各アクションを実行します (場合によっては並列で)。
オーバーロード
Invoke(Action[]) |
指定された一連のアクションの各アクションを実行します (場合によっては並列で)。 |
Invoke(ParallelOptions, Action[]) |
操作がユーザーによって取り消されていない限り、指定された各アクションを実行します。アクションは並列で実行される可能性があります。 |
Invoke(Action[])
- ソース:
- Parallel.cs
- ソース:
- Parallel.cs
- ソース:
- Parallel.cs
指定された一連のアクションの各アクションを実行します (場合によっては並列で)。
public:
static void Invoke(... cli::array <Action ^> ^ actions);
public static void Invoke (params Action[] actions);
static member Invoke : Action[] -> unit
Public Shared Sub Invoke (ParamArray actions As Action())
パラメーター
例外
actions
引数が null
です。
actions
配列内のアクションが例外をスローしたときにスローされる例外。
actions
配列に null
要素が含まれています。
例
この例では、 メソッドを他の Invoke メソッド、匿名デリゲート、ラムダ式と共に使用する方法を示します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
class ParallelInvokeDemo
{
// Demonstrated features:
// Parallel.Invoke()
// Expected results:
// The threads on which each task gets executed may be different.
// The thread assignments may be different in different executions.
// The tasks may get executed in any order.
// Documentation:
// http://msdn.microsoft.com/library/dd783942(VS.100).aspx
static void Main()
{
try
{
Parallel.Invoke(
BasicAction, // Param #0 - static method
() => // Param #1 - lambda expression
{
Console.WriteLine("Method=beta, Thread={0}", Thread.CurrentThread.ManagedThreadId);
},
delegate() // Param #2 - in-line delegate
{
Console.WriteLine("Method=gamma, Thread={0}", Thread.CurrentThread.ManagedThreadId);
}
);
}
// No exception is expected in this example, but if one is still thrown from a task,
// it will be wrapped in AggregateException and propagated to the main thread.
catch (AggregateException e)
{
Console.WriteLine("An action has thrown an exception. THIS WAS UNEXPECTED.\n{0}", e.InnerException.ToString());
}
}
static void BasicAction()
{
Console.WriteLine("Method=alpha, Thread={0}", Thread.CurrentThread.ManagedThreadId);
}
}
Imports System.Threading
Imports System.Threading.Tasks
Module InvokeDemo
' Demonstrated features:
' Parallel.Invoke()
' Expected results:
' The threads on which each task gets executed may be different.
' The thread assignments may be different in different executions.
' The tasks may get executed in any order.
' Documentation:
' http://msdn.microsoft.com/library/dd783942(VS.100).aspx
Private Sub Main()
Try
' Param #0 - static method
Parallel.Invoke(AddressOf BasicAction,
Sub()
' Param #1 - lambda expression
Console.WriteLine("Method=beta, Thread={0}", Thread.CurrentThread.ManagedThreadId)
End Sub,
Sub()
' Param #2 - in-line delegate
Console.WriteLine("Method=gamma, Thread={0}", Thread.CurrentThread.ManagedThreadId)
End Sub)
Catch e As AggregateException
' No exception is expected in this example, but if one is still thrown from a task,
' it will be wrapped in AggregateException and propagated to the main thread.
Console.WriteLine("An action has thrown an exception. THIS WAS UNEXPECTED." & vbLf & "{0}", e.InnerException.ToString())
End Try
End Sub
Private Sub BasicAction()
Console.WriteLine("Method=alpha, Thread={0}", Thread.CurrentThread.ManagedThreadId)
End Sub
End Module
注釈
このメソッドは、一連の操作を並列で実行するために使用できます。
操作が実行される順序、または操作が並列で実行されるかどうかに関する保証は行われません。 このメソッドは、正常終了または例外的終了が原因で完了したかどうかに関係なく、指定された各操作が完了するまで戻りません。
詳細については、Parallel.Invoke を使用して並列操作を実行する」を参照してください。
適用対象
Invoke(ParallelOptions, Action[])
- ソース:
- Parallel.cs
- ソース:
- Parallel.cs
- ソース:
- Parallel.cs
操作がユーザーによって取り消されていない限り、指定された各アクションを実行します。アクションは並列で実行される可能性があります。
public:
static void Invoke(System::Threading::Tasks::ParallelOptions ^ parallelOptions, ... cli::array <Action ^> ^ actions);
public static void Invoke (System.Threading.Tasks.ParallelOptions parallelOptions, params Action[] actions);
static member Invoke : System.Threading.Tasks.ParallelOptions * Action[] -> unit
Public Shared Sub Invoke (parallelOptions As ParallelOptions, ParamArray actions As Action())
パラメーター
- parallelOptions
- ParallelOptions
この操作の動作を構成するオブジェクト。
- actions
- Action[]
実行対象のアクションの配列。
例外
parallelOptions
内の CancellationToken が設定されます。
actions
配列内のアクションが例外をスローしたときにスローされる例外。
actions
配列に null
要素が含まれています。
parallelOptions
内の CancellationTokenSource に関連付けられている CancellationToken は破棄されました。
注釈
このメソッドは、一連の操作を並列で実行するために使用できます。 構造体と共 ParallelOptions に渡されるキャンセル トークンを使用すると、呼び出し元は操作全体を取り消すことができます。 詳細については、「マネージド スレッドのキャンセル」を参照してください。
操作が実行される順序、または操作が並列で実行されるかどうかに関する保証は行われません。 このメソッドは、正常終了または例外的終了が原因で完了したかどうかに関係なく、指定された各操作が完了するまで戻りません。
詳細については、Parallel.Invoke を使用して並列操作を実行する」を参照してください。
適用対象
.NET