Parallel.Invoke Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.
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.