Parallel.Invoke Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Kör var och en av de angivna åtgärderna, eventuellt parallellt.
Överlagringar
| Name | Description |
|---|---|
| Invoke(Action[]) |
Kör var och en av de angivna åtgärderna, eventuellt parallellt. |
| Invoke(ParallelOptions, Action[]) |
Kör var och en av de angivna åtgärderna, eventuellt parallellt, såvida inte åtgärden avbryts av användaren. |
Invoke(Action[])
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
Kör var och en av de angivna åtgärderna, eventuellt parallellt.
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())
Parametrar
Undantag
Argumentet actions är null.
Undantaget som utlöses när en åtgärd i matrisen actions utlöser ett undantag.
Matrisen actions innehåller ett null element.
Exempel
Det här exemplet visar hur du använder Invoke metoden med andra metoder, anonyma ombud och lambda-uttryck.
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
Kommentarer
Den här metoden kan användas för att köra en uppsättning åtgärder, eventuellt parallellt.
Inga garantier ges om i vilken ordning åtgärderna körs eller om de körs parallellt. Den här metoden returneras inte förrän var och en av de angivna åtgärderna har slutförts, oavsett om slutförandet sker på grund av normal eller exceptionell avslutning.
Mer information finns i Så här: Använd Parallel.Invoke för att köra parallella åtgärder.
Gäller för
Invoke(ParallelOptions, Action[])
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
- Källa:
- Parallel.cs
Kör var och en av de angivna åtgärderna, eventuellt parallellt, såvida inte åtgärden avbryts av användaren.
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())
Parametrar
- parallelOptions
- ParallelOptions
Ett objekt som konfigurerar beteendet för den här åtgärden.
- actions
- Action[]
En matris med åtgärder som ska köras.
Undantag
I CancellationToken har angetts parallelOptions .
Undantaget som utlöses när en åtgärd i matrisen actions utlöser ett undantag.
Matrisen actions innehåller ett null element.
Den CancellationTokenSource associerade med CancellationToken i parallelOptions har tagits bort.
Kommentarer
Den här metoden kan användas för att köra en uppsättning åtgärder, eventuellt parallellt. Den annulleringstoken som skickades in med ParallelOptions strukturen gör att anroparen kan avbryta hela åtgärden. Mer information finns i Annullering i hanterade trådar.
Inga garantier ges om i vilken ordning åtgärderna körs eller om de körs parallellt. Den här metoden returneras inte förrän var och en av de angivna åtgärderna har slutförts, oavsett om slutförandet sker på grund av normal eller exceptionell avslutning.
Mer information finns i Så här: Använd Parallel.Invoke för att köra parallella åtgärder.