Parallel.Invoke Methode

Definitie

Hiermee worden alle opgegeven acties uitgevoerd, mogelijk parallel.

Overloads

Name Description
Invoke(Action[])

Hiermee worden alle opgegeven acties uitgevoerd, mogelijk parallel.

Invoke(ParallelOptions, Action[])

Voert elk van de opgegeven acties uit, mogelijk parallel, tenzij de bewerking wordt geannuleerd door de gebruiker.

Invoke(Action[])

Hiermee worden alle opgegeven acties uitgevoerd, mogelijk 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())

Parameters

actions
Action[]

Een matrix van Action uit te voeren.

Uitzonderingen

Het actions argument is null.

De uitzondering die wordt gegenereerd wanneer een actie in de actions matrix een uitzondering genereert.

De actions matrix bevat een null element.

Voorbeelden

In dit voorbeeld ziet u hoe u de Invoke methode gebruikt met andere methoden, anonieme gemachtigden en lambda-expressies.

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

Opmerkingen

Deze methode kan worden gebruikt om een reeks bewerkingen uit te voeren, mogelijk parallel.

Er worden geen garanties gegeven over de volgorde waarin de bewerkingen worden uitgevoerd of of ze parallel worden uitgevoerd. Deze methode wordt pas geretourneerd als elk van de geleverde bewerkingen is voltooid, ongeacht of de voltooiing plaatsvindt als gevolg van normale of uitzonderlijke beëindiging.

Voor meer informatie, zie Hoe te: Parallel.Invoke gebruiken om parallelle bewerkingen uit te voeren.

Van toepassing op

Invoke(ParallelOptions, Action[])

Voert elk van de opgegeven acties uit, mogelijk parallel, tenzij de bewerking wordt geannuleerd door de gebruiker.

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

Parameters

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

actions
Action[]

Een matrix met acties die moeten worden uitgevoerd.

Uitzonderingen

De CancellationToken in de parallelOptions set is ingesteld.

Het actions argument is null.

– of –

Het parallelOptions argument is null.

De uitzondering die wordt gegenereerd wanneer een actie in de actions matrix een uitzondering genereert.

De actions matrix bevat een null element.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Opmerkingen

Deze methode kan worden gebruikt om een reeks bewerkingen uit te voeren, mogelijk parallel. Met het annuleringstoken dat met de ParallelOptions structuur is doorgegeven, kan de beller de hele bewerking annuleren. Zie Annulering in Beheerde threadsvoor meer informatie.

Er worden geen garanties gegeven over de volgorde waarin de bewerkingen worden uitgevoerd of of ze parallel worden uitgevoerd. Deze methode wordt pas geretourneerd als elk van de geleverde bewerkingen is voltooid, ongeacht of de voltooiing plaatsvindt als gevolg van normale of uitzonderlijke beëindiging.

Voor meer informatie, zie Hoe te: Parallel.Invoke gebruiken om parallelle bewerkingen uit te voeren.

Van toepassing op