Comparteix a través de


Parallel.Invoke Método

Definición

Ejecuta cada una de las acciones proporcionadas, posiblemente en paralelo.

Sobrecargas

Invoke(Action[])

Ejecuta cada una de las acciones proporcionadas, posiblemente en paralelo.

Invoke(ParallelOptions, Action[])

Ejecuta todas las acciones proporcionadas, posiblemente en paralelo, a menos que el usuario cancele la operación.

Invoke(Action[])

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Ejecuta cada una de las acciones proporcionadas, posiblemente en paralelo.

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

Parámetros

actions
Action[]

Matriz de Action que se va a ejecutar.

Excepciones

El argumento actions es null.

La excepción que se produce cuando cualquier acción de la matriz actions produce una excepción.

La matriz actions contiene un elemento null.

Ejemplos

En este ejemplo se muestra cómo usar el Invoke método con otros métodos, delegados anónimos y expresiones 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

Comentarios

Este método se puede usar para ejecutar un conjunto de operaciones, potencialmente en paralelo.

No se realizan garantías sobre el orden en el que se ejecutan las operaciones o si se ejecutan en paralelo. Este método no devuelve hasta que se haya completado cada una de las operaciones proporcionadas, independientemente de si se produce la finalización debido a una finalización normal o excepcional.

Para obtener más información, vea Cómo: Usar Parallel.Invoke para ejecutar operaciones en paralelo.

Se aplica a

Invoke(ParallelOptions, Action[])

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Ejecuta todas las acciones proporcionadas, posiblemente en paralelo, a menos que el usuario cancele la operación.

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

Parámetros

parallelOptions
ParallelOptions

Objeto que configura el comportamiento de esta operación.

actions
Action[]

Matriz de acciones que se va a ejecutar.

Excepciones

CancellationToken en el estado parallelOptions está establecido.

El argumento actions es null.

o bien

El argumento parallelOptions es null.

La excepción que se produce cuando cualquier acción de la matriz actions produce una excepción.

La matriz actions contiene un elemento null.

El objeto CancellationTokenSource asociado a CancellationToken en el parallelOptions se ha desechado.

Comentarios

Este método se puede usar para ejecutar un conjunto de operaciones, potencialmente en paralelo. El token de cancelación pasado con la ParallelOptions estructura permite al autor de la llamada cancelar toda la operación. Para más información, consulte el tema sobre la cancelación en subprocesos administrados.

No se realizan garantías sobre el orden en el que se ejecutan las operaciones o si se ejecutan en paralelo. Este método no devuelve hasta que se haya completado cada una de las operaciones proporcionadas, independientemente de si se produce la finalización debido a una finalización normal o excepcional.

Para obtener más información, vea Cómo: Usar Parallel.Invoke para ejecutar operaciones en paralelo.

Se aplica a