Parallel.Invoke Methode

Definition

Führt jede der bereitgestellten Aktionen aus, möglicherweise parallel.

Überlädt

Name Beschreibung
Invoke(Action[])

Führt jede der bereitgestellten Aktionen aus, möglicherweise parallel.

Invoke(ParallelOptions, Action[])

Führt jede der bereitgestellten Aktionen, möglicherweise parallel, aus, es sei denn, der Vorgang wird vom Benutzer abgebrochen.

Invoke(Action[])

Quelle:
Parallel.cs
Quelle:
Parallel.cs
Quelle:
Parallel.cs
Quelle:
Parallel.cs
Quelle:
Parallel.cs

Führt jede der bereitgestellten Aktionen aus, möglicherweise 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())

Parameter

actions
Action[]

Ein Array, das Action ausgeführt werden soll.

Ausnahmen

Das actions Argument ist null.

Die Ausnahme, die ausgelöst wird, wenn eine Aktion im actions Array eine Ausnahme auslöst.

Das actions Array enthält ein null Element.

Beispiele

In diesem Beispiel wird die Verwendung der Invoke Methode mit anderen Methoden, anonymen Delegaten und Lambda-Ausdrücken veranschaulicht.

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

Hinweise

Diese Methode kann verwendet werden, um eine Gruppe von Vorgängen auszuführen, die potenziell parallel sind.

Es werden keine Garantien für die Reihenfolge, in der die Vorgänge ausgeführt werden, oder ob sie parallel ausgeführt werden. Diese Methode wird erst zurückgegeben, wenn jeder der bereitgestellten Vorgänge abgeschlossen wurde, unabhängig davon, ob der Abschluss aufgrund einer normalen oder außergewöhnlichen Beendigung erfolgt.

Weitere Informationen finden Sie unter So verwenden Sie Parallel.Invoke, um parallele Operationen auszuführen.

Gilt für:

Invoke(ParallelOptions, Action[])

Quelle:
Parallel.cs
Quelle:
Parallel.cs
Quelle:
Parallel.cs
Quelle:
Parallel.cs
Quelle:
Parallel.cs

Führt jede der bereitgestellten Aktionen, möglicherweise parallel, aus, es sei denn, der Vorgang wird vom Benutzer abgebrochen.

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

Parameter

parallelOptions
ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.

actions
Action[]

Ein Array von auszuführenden Aktionen.

Ausnahmen

Dies CancellationTokenparallelOptions ist festgelegt.

Das actions Argument ist null.

-oder-

Das parallelOptions Argument ist null.

Die Ausnahme, die ausgelöst wird, wenn eine Aktion im actions Array eine Ausnahme auslöst.

Das actions Array enthält ein null Element.

Das CancellationTokenSource zugeordnete In wurde CancellationTokenparallelOptions gelöscht.

Hinweise

Diese Methode kann verwendet werden, um eine Gruppe von Vorgängen auszuführen, die potenziell parallel sind. Das mit der ParallelOptions Struktur übergebene Abbruchtoken ermöglicht es dem Aufrufer, den gesamten Vorgang abzubrechen. Weitere Informationen finden Sie unter Abbrechen in verwalteten Threads.

Es werden keine Garantien für die Reihenfolge, in der die Vorgänge ausgeführt werden, oder ob sie parallel ausgeführt werden. Diese Methode wird erst zurückgegeben, wenn jeder der bereitgestellten Vorgänge abgeschlossen wurde, unabhängig davon, ob der Abschluss aufgrund einer normalen oder außergewöhnlichen Beendigung erfolgt.

Weitere Informationen finden Sie unter So verwenden Sie Parallel.Invoke, um parallele Operationen auszuführen.

Gilt für: