Udostępnij za pośrednictwem


Parallel.Invoke Metoda

Definicja

Wykonuje każdą z podanych akcji, prawdopodobnie równolegle.

Przeciążenia

Invoke(Action[])

Wykonuje każdą z podanych akcji, prawdopodobnie równolegle.

Invoke(ParallelOptions, Action[])

Wykonuje każdą z podanych akcji, prawdopodobnie równolegle, chyba że operacja zostanie anulowana przez użytkownika.

Invoke(Action[])

Źródło:
Parallel.cs
Źródło:
Parallel.cs
Źródło:
Parallel.cs

Wykonuje każdą z podanych akcji, prawdopodobnie równolegle.

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

Parametry

actions
Action[]

Tablica Action do wykonania.

Wyjątki

Argumentem actions jest null.

Wyjątek zgłaszany, gdy każda akcja w actions tablicy zgłasza wyjątek.

Tablica actions zawiera null element.

Przykłady

W tym przykładzie pokazano, jak używać Invoke metody z innymi metodami, anonimowymi delegatami i wyrażeniami 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

Uwagi

Ta metoda może służyć do wykonywania zestawu operacji, potencjalnie równolegle.

Nie ma gwarancji dotyczących kolejności wykonywania operacji lub równoległego wykonywania ich. Ta metoda nie zwraca się, dopóki każda z podanych operacji nie zostanie ukończona, niezależnie od tego, czy ukończenie nastąpi z powodu normalnego lub wyjątkowego zakończenia.

Aby uzyskać więcej informacji, zobacz How to: Use Parallel.Invoke to Execute Parallel Operations (Instrukcje: używanie metody Parallel.Invoke do wykonywania operacji równoległych).

Dotyczy

Invoke(ParallelOptions, Action[])

Źródło:
Parallel.cs
Źródło:
Parallel.cs
Źródło:
Parallel.cs

Wykonuje każdą z podanych akcji, prawdopodobnie równolegle, chyba że operacja zostanie anulowana przez użytkownika.

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

Parametry

parallelOptions
ParallelOptions

Obiekt, który konfiguruje zachowanie tej operacji.

actions
Action[]

Tablica akcji do wykonania.

Wyjątki

Wartość w elemecie jest ustawiona CancellationTokenparallelOptions .

Argumentem actions jest null.

-lub-

Argumentem parallelOptions jest null.

Wyjątek zgłaszany, gdy każda akcja w actions tablicy zgłasza wyjątek.

Tablica actions zawiera null element.

Element CancellationTokenSource skojarzony z elementem CancellationToken w obiekcie parallelOptions został usunięty.

Uwagi

Ta metoda może służyć do wykonywania zestawu operacji, potencjalnie równolegle. Token anulowania przekazany za pomocą ParallelOptions struktury umożliwia obiektowi wywołującym anulowanie całej operacji. Aby uzyskać więcej informacji, zobacz Anulowanie w zarządzanych wątkach.

Nie ma gwarancji dotyczących kolejności wykonywania operacji lub równoległego wykonywania ich. Ta metoda nie zwraca się, dopóki każda z podanych operacji nie zostanie ukończona, niezależnie od tego, czy ukończenie nastąpi z powodu normalnego lub wyjątkowego zakończenia.

Aby uzyskać więcej informacji, zobacz How to: Use Parallel.Invoke to Execute Parallel Operations (Instrukcje: używanie metody Parallel.Invoke do wykonywania operacji równoległych).

Dotyczy