Parallel.Invoke Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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.