Parallel.Invoke 메서드

정의

각각의 제공된 동작을 가능하면 병렬로 실행합니다.Executes each of the provided actions, possibly in parallel.

오버로드

Invoke(Action[])

각각의 제공된 동작을 가능하면 병렬로 실행합니다.Executes each of the provided actions, possibly in parallel.

Invoke(ParallelOptions, Action[])

사용자가 작업을 취소하지 않는다면 제공된 각 작업을 가능한 한 병렬로 실행합니다.Executes each of the provided actions, possibly in parallel, unless the operation is cancelled by the user.

Invoke(Action[])

각각의 제공된 동작을 가능하면 병렬로 실행합니다.Executes each of the provided actions, possibly in parallel.

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
Action[]

실행할 Action의 배열입니다.An array of Action to execute.

예외

actions 인수가 null인 경우The actions argument is null.

actions 배열에 있는 모든 작업이 예외를 throw하는 경우 throw되는 예외입니다.The exception that is thrown when any action in the actions array throws an exception.

actions 배열에 null 요소가 포함되어 있습니다.The actions array contains a null element.

예제

이 예제를 사용 하는 방법에 설명 합니다 Invoke 다른 메서드, 익명 대리자 및 람다 식을 사용 하 여 메서드.This example demonstrates how to use the Invoke method with other methods, anonymous delegates, and lambda expressions.

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

설명

이 메서드는 작업의 집합을 잠재적으로 병렬로 실행 데 사용할 수 있습니다.This method can be used to execute a set of operations, potentially in parallel.

병렬로 실행 되는지 여부 또는 작업이 실행 되는 순서에 대 한 보장 되지 않습니다 됩니다.No guarantees are made about the order in which the operations execute or whether they execute in parallel. 이 메서드는 완료 될 때까지 각 제공 된 작업, 완료 정상 또는 예외 종료로 인해 발생 하는 여부에 관계 없이 반환 하지 않습니다.This method does not return until each of the provided operations has completed, regardless of whether completion occurs due to normal or exceptional termination.

자세한 내용은 방법: Parallel.Invoke를 사용하여 병렬 작업 실행을 참조하세요.For more information, see How to: Use Parallel.Invoke to Execute Parallel Operations.

Invoke(ParallelOptions, Action[])

사용자가 작업을 취소하지 않는다면 제공된 각 작업을 가능한 한 병렬로 실행합니다.Executes each of the provided actions, possibly in parallel, unless the operation is cancelled by the user.

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

매개 변수

parallelOptions
ParallelOptions

이 작업의 동작을 구성하는 개체입니다.An object that configures the behavior of this operation.

actions
Action[]

실행할 동작의 배열입니다.An array of actions to execute.

예외

parallelOptionsCancellationToken이 설정됩니다.The CancellationToken in the parallelOptions is set.

actions 인수가 null인 경우The actions argument is null.

또는-or- parallelOptions 인수가 null인 경우The parallelOptions argument is null.

actions 배열에 있는 모든 작업이 예외를 throw하는 경우 throw되는 예외입니다.The exception that is thrown when any action in the actions array throws an exception.

actions 배열에 null 요소가 포함되어 있습니다.The actions array contains a null element.

parallelOptionsCancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

설명

이 메서드는 작업의 집합을 잠재적으로 병렬로 실행 데 사용할 수 있습니다.This method can be used to execute a set of operations, potentially in parallel. 에 전달 된 취소 토큰이 ParallelOptions 구조 전체 작업을 취소 하려면 호출자에 게 사용 하도록 설정 합니다.The cancellation token passed in with the ParallelOptions structure enables the caller to cancel the entire operation. 자세한 내용은 관리되는 스레드의 취소를 참조하세요.For more information, see Cancellation in Managed Threads.

병렬로 실행 되는지 여부 또는 작업이 실행 되는 순서에 대 한 보장 되지 않습니다 됩니다.No guarantees are made about the order in which the operations execute or whether they execute in parallel. 이 메서드는 완료 될 때까지 각 제공 된 작업, 완료 정상 또는 예외 종료로 인해 발생 하는 여부에 관계 없이 반환 하지 않습니다.This method does not return until each of the provided operations has completed, regardless of whether completion occurs due to normal or exceptional termination.

자세한 내용은 방법: Parallel.Invoke를 사용하여 병렬 작업 실행을 참조하세요.For more information, see How to: Use Parallel.Invoke to Execute Parallel Operations.

적용 대상