Bahasa

Parallel.Invoke Metode

Definisi

Menjalankan setiap tindakan yang disediakan, mungkin secara paralel.

Overload

Nama Deskripsi
Invoke(Action[])

Menjalankan setiap tindakan yang disediakan, mungkin secara paralel.

Invoke(ParallelOptions, Action[])

Menjalankan setiap tindakan yang disediakan, mungkin secara paralel, kecuali operasi dibatalkan oleh pengguna.

Invoke(Action[])

Sumber:
Parallel.cs
Sumber:
Parallel.cs
Sumber:
Parallel.cs
Sumber:
Parallel.cs
Sumber:
Parallel.cs

Menjalankan setiap tindakan yang disediakan, mungkin secara paralel.

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[]

Array untuk Action dieksekusi.

Pengecualian

Argumennya actions adalah null.

Pengecualian yang dilemparkan ketika tindakan apa pun dalam actions array melemparkan pengecualian.

Array actions berisi null elemen.

Contoh

Contoh ini menunjukkan cara menggunakan Invoke metode dengan metode lain, delegasi anonim, dan ekspresi 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

Keterangan

Metode ini dapat digunakan untuk menjalankan serangkaian operasi, berpotensi paralel.

Tidak ada jaminan yang dibuat tentang urutan operasi dijalankan atau apakah operasi dijalankan secara paralel. Metode ini tidak kembali sampai masing-masing operasi yang disediakan selesai, terlepas dari apakah penyelesaian terjadi karena penghentian normal atau luar biasa.

Untuk informasi selengkapnya, lihat Cara: Menggunakan Parallel.Invoke untuk Menjalankan Operasi Paralel.

Berlaku untuk

Invoke(ParallelOptions, Action[])

Sumber:
Parallel.cs
Sumber:
Parallel.cs
Sumber:
Parallel.cs
Sumber:
Parallel.cs
Sumber:
Parallel.cs

Menjalankan setiap tindakan yang disediakan, mungkin secara paralel, kecuali operasi dibatalkan oleh pengguna.

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

Objek yang mengonfigurasi perilaku operasi ini.

actions
Action[]

Array tindakan yang akan dijalankan.

Pengecualian

dalam CancellationTokenparallelOptions diatur.

Argumennya actions adalah null.

-atau-

Argumennya parallelOptions adalah null.

Pengecualian yang dilemparkan ketika tindakan apa pun dalam actions array melemparkan pengecualian.

Array actions berisi null elemen.

Yang CancellationTokenSource terkait dengan CancellationToken dalam parallelOptions telah dibuang.

Keterangan

Metode ini dapat digunakan untuk menjalankan serangkaian operasi, berpotensi paralel. Token pembatalan yang diteruskan dengan ParallelOptions struktur memungkinkan pemanggil untuk membatalkan seluruh operasi. Untuk informasi selengkapnya, lihat Pembatalan di Utas Terkelola.

Tidak ada jaminan yang dibuat tentang urutan operasi dijalankan atau apakah operasi dijalankan secara paralel. Metode ini tidak kembali sampai masing-masing operasi yang disediakan selesai, terlepas dari apakah penyelesaian terjadi karena penghentian normal atau luar biasa.

Untuk informasi selengkapnya, lihat Cara: Menggunakan Parallel.Invoke untuk Menjalankan Operasi Paralel.

Berlaku untuk