Share via


Parallel.Invoke Méthode

Définition

Exécute chacune des actions fournies, éventuellement en parallèle.

Surcharges

Invoke(Action[])

Exécute chacune des actions fournies, éventuellement en parallèle.

Invoke(ParallelOptions, Action[])

Exécute chacune des actions fournies, éventuellement en parallèle, sauf si l'opération est annulée par l'utilisateur.

Invoke(Action[])

Exécute chacune des actions fournies, éventuellement en parallèle.

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())

Paramètres

actions
Action[]

Tableau de Action à exécuter.

Exceptions

L'argument actions a la valeur null.

L'exception levée lorsque toute action dans le tableau actions lève une exception.

Le tableau actions contient un élément null.

Exemples

Cet exemple montre comment utiliser la Invoke méthode avec d’autres méthodes, délégués anonymes et expressions lambda.

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

Remarques

Cette méthode peut être utilisée pour exécuter un ensemble d’opérations, potentiellement en parallèle.

Aucune garantie n’est faite sur l’ordre dans lequel les opérations s’exécutent ou si elles s’exécutent en parallèle. Cette méthode ne retourne pas tant que chacune des opérations fournies n’est pas terminée, qu’elle se produise ou non en raison d’un arrêt normal ou exceptionnel.

Pour plus d’informations, consultez Comment : utiliser parallel_invoke pour exécuter des opérations parallèles.

S’applique à

Invoke(ParallelOptions, Action[])

Exécute chacune des actions fournies, éventuellement en parallèle, sauf si l'opération est annulée par l'utilisateur.

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())

Paramètres

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

actions
Action[]

Tableau d'actions à exécuter.

Exceptions

Objet CancellationToken dans parallelOptions est défini.

L'argument actions a la valeur null.

  • ou - L'argument parallelOptions a la valeur null.

L'exception levée lorsque toute action dans le tableau actions lève une exception.

Le tableau actions contient un élément null.

Objet CancellationTokenSource associé à CancellationToken dans l'objet parallelOptions a été supprimé.

Remarques

Cette méthode peut être utilisée pour exécuter un ensemble d’opérations, potentiellement en parallèle. Le jeton d’annulation transmis avec la ParallelOptions structure permet à l’appelant d’annuler toute l’opération. Pour plus d’informations, consultez Annulation dans les threads managés.

Aucune garantie n’est faite sur l’ordre dans lequel les opérations s’exécutent ou si elles s’exécutent en parallèle. Cette méthode ne retourne pas tant que chacune des opérations fournies n’est pas terminée, qu’elle se produise ou non en raison d’un arrêt normal ou exceptionnel.

Pour plus d’informations, consultez Comment : utiliser parallel_invoke pour exécuter des opérations parallèles.

S’applique à