Parallel.Invoke Metod

Definition

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

actions
Action[]

En matris som ska köras Action .

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 .

Argumentet actions är null.

-eller-

Argumentet parallelOptions ä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.

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.

Gäller för