Bagikan melalui


Parallel.ForEach Metode

Definisi

foreach Menjalankan operasi (For Each dalam Visual Basic) di mana perulangan dapat berjalan secara paralel.

Overload

ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan data thread-local dan indeks 64-bit di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di Partitioner mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan indeks 64-bit dan dengan data thread-local di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di IEnumerable mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan data thread-local di IEnumerable mana iterasi dapat berjalan secara paralel dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan data thread-local di Partitioner mana iterasi dapat berjalan secara paralel dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di IEnumerable mana iterasi dapat berjalan secara paralel dan opsi perulangan dapat dikonfigurasi.

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel dan opsi perulangan dapat dikonfigurasi.

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan indeks 64-bit di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(Partitioner<TSource>, Action<TSource>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel.

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan indeks 64-bit di IEnumerable mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di IEnumerable mana iterasi dapat berjalan secara paralel.

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)

foreach Menjalankan operasi (For Each dalam Visual Basic) di IEnumerable mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

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

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

TLocal

Jenis data thread-local.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegasi yang dipanggil sekali per perulangan.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumennya localInit adalah null.

-atau-

Argumennya localFinally adalah null.

parallelOptions Dalam CancellationToken argumen dibatalkan.

yang CancellationTokenSource terkait dengan di CancellationTokenparallelOptions telah dibuang.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, ParallelLoopState instans yang dapat digunakan untuk keluar dari perulangan sebelum waktunya, dan beberapa status lokal yang mungkin dibagikan di antara perulangan yang dijalankan pada utas yang sama.

Delegasi localInit dipanggil sekali untuk setiap tugas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap tugas mengembalikan nilai status yang diteruskan ke localFinally delegasi. Delegasi localFinally dipanggil sekali per utas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

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

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach dan indeks 64-bit di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

TLocal

Jenis data thread-local.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

Delegasi yang dipanggil sekali per perulangan.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumennya localInit adalah null.

-atau-

Argumennya localFinally adalah null.

parallelOptions Dalam CancellationToken argumen dibatalkan.

yang CancellationTokenSource terkait dengan di CancellationTokenparallelOptions telah dibuang.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, ParallelLoopState instans yang dapat digunakan untuk memecah perulangan sebelum waktunya, indeks elemen saat ini (Int64), dan beberapa status lokal yang mungkin dibagikan di antara iterasi yang dijalankan pada utas yang sama.

Delegasi localInit dipanggil sekali untuk setiap tugas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap tugas mengembalikan nilai status yang diteruskan ke localFinally delegasi. localFinally Delegasi dipanggil sekali per utas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

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

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di Partitioner mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

TLocal

Jenis data thread-local.

Parameter

source
Partitioner<TSource>

Partisi yang berisi sumber data asli.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegasi yang dipanggil sekali per iterasi.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumennya localInit adalah null.

-atau-

Argumennya localFinally adalah null.

Properti SupportsDynamicPartitions dalam pengembalian falsesourcePartitioner atau partisi mengembalikan null partisi.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Dalam CancellationTokenparallelOptions argumen dibatalkan.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Kelebihan beban ini disediakan untuk skenario dengan badan perulangan kecil yang mungkin mendapat manfaat dari partisi rentang statis. Partisi harus mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

localInit Delegasi dipanggil sekali untuk setiap tugas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap tugas mengembalikan nilai status yang diteruskan ke localFinally delegasi. localFinally Delegasi dipanggil sekali per tugas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan indeks 64-bit dan dengan data thread-local di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

TLocal

Jenis data thread-local.

Parameter

source
OrderablePartitioner<TSource>

Partisi yang dapat diurutkan yang berisi sumber data asli.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

Delegasi yang dipanggil sekali per iterasi.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumen localInit atau localFinally adalah null.

Properti SupportsDynamicPartitions dalam pengembalian falsesourcePartitioner atau partisi mengembalikan null partisi.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Dalam CancellationTokenparallelOptions argumen dibatalkan.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

localInit Delegasi dipanggil sekali untuk setiap tugas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap utas mengembalikan nilai status yang diteruskan ke localFinally delegasi. localFinally Delegasi dipanggil sekali per tugas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

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

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di IEnumerable mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Generic.IEnumerable<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

TLocal

Jenis data thread-local.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegasi yang dipanggil sekali per iterasi.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumennya localInit adalah null.

-atau-

Argumennya localFinally adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Contoh

Contoh berikut menunjukkan cara menggunakan ForEach metode dengan status lokal:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

class ForEachWithThreadLocal
{
    // Demonstrated features:
    // 		Parallel.ForEach()
    //		Thread-local state
    // Expected results:
    //      This example sums up the elements of an int[] in parallel.
    //      Each thread maintains a local sum. When a thread is initialized, that local sum is set to 0.
    //      On every iteration the current element is added to the local sum.
    //      When a thread is done, it safely adds its local sum to the global sum.
    //      After the loop is complete, the global sum is printed out.
    // Documentation:
    //		http://msdn.microsoft.com/library/dd990270(VS.100).aspx
    static void Main()
    {
        // The sum of these elements is 40.
        int[] input = { 4, 1, 6, 2, 9, 5, 10, 3 };
        int sum = 0;

        try
        {
            Parallel.ForEach(
                    input,					        // source collection
                    () => 0,					        // thread local initializer
                    (n, loopState, localSum) =>		// body
                    {
                        localSum += n;
                        Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum);
                        return localSum;
                    },
                    (localSum) => Interlocked.Add(ref sum, localSum)					// thread local aggregator
                );

            Console.WriteLine("\nSum={0}", sum);
        }
        // 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("Parallel.ForEach has thrown an exception. THIS WAS NOT EXPECTED.\n{0}", e);
        }
    }
}
Imports System.Threading
Imports System.Threading.Tasks

Module ForEachDemo

    ' Demonstrated features:
    '   Parallel.ForEach()
    '   Thread-local state
    ' Expected results:
    '   This example sums up the elements of an int[] in parallel.
    '   Each thread maintains a local sum. When a thread is initialized, that local sum is set to 0.
    '   On every iteration the current element is added to the local sum.
    '   When a thread is done, it safely adds its local sum to the global sum.
    '   After the loop is complete, the global sum is printed out.
    ' Documentation:
    '   http://msdn.microsoft.com/library/dd990270(VS.100).aspx
    Private Sub ForEachDemo()
        ' The sum of these elements is 40.
        Dim input As Integer() = {4, 1, 6, 2, 9, 5, _
        10, 3}
        Dim sum As Integer = 0

        Try
            ' source collection
            Parallel.ForEach(input,
                             Function()
                                 ' thread local initializer
                                 Return 0
                             End Function,
                             Function(n, loopState, localSum)
                                 ' body
                                 localSum += n
                                 Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum)
                                 Return localSum
                             End Function,
                             Sub(localSum)
                                 ' thread local aggregator
                                 Interlocked.Add(sum, localSum)
                             End Sub)

            Console.WriteLine(vbLf & "Sum={0}", sum)
        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("Parallel.ForEach has thrown an exception. THIS WAS NOT EXPECTED." & vbLf & "{0}", e)
        End Try
    End Sub


End Module

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, ParallelLoopState instans yang dapat digunakan untuk keluar dari perulangan sebelum waktunya, dan beberapa status lokal yang mungkin dibagikan di antara perulangan yang dijalankan pada utas yang sama.

localInit Delegasi dipanggil sekali untuk setiap tugas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap tugas mengembalikan nilai status yang diteruskan ke localFinally delegasi. localFinally Delegasi dipanggil sekali per utas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan data thread-local di IEnumerable mana iterasi dapat berjalan secara paralel dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Generic.IEnumerable<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

TLocal

Jenis data thread-local.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

Delegasi yang dipanggil sekali per perulangan.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumennya localInit adalah null.

-atau-

Argumennya localFinally adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, ParallelLoopState instans yang dapat digunakan untuk memecah perulangan sebelum waktunya, indeks elemen saat ini (Int64), dan beberapa status lokal yang mungkin dibagikan di antara iterasi yang dijalankan pada utas yang sama.

Delegasi localInit dipanggil sekali untuk setiap tugas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap tugas mengembalikan nilai status yang diteruskan ke localFinally delegasi. Delegasi localFinally dipanggil sekali per tugas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan data thread-local di Partitioner mana iterasi dapat berjalan secara paralel dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Concurrent.Partitioner<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As Partitioner(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

TLocal

Jenis data thread-local.

Parameter

source
Partitioner<TSource>

Partisi yang berisi sumber data asli.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegasi yang dipanggil sekali per perulangan.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumennya localInit adalah null.

-atau-

Argumennya localFinally adalah null.

Properti SupportsDynamicPartitions dalam pengembalian falsesourcePartitioner atau partisi mengembalikan null partisi.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

localInit Delegasi dipanggil sekali untuk setiap utas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap tugas mengembalikan nilai status yang diteruskan ke localFinally delegasi. Delegasi localFinally dipanggil sekali per tugas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

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

Menjalankan operasi (For Each dalam Visual Basic) dengan data lokal utas foreach di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal> (System.Collections.Concurrent.OrderablePartitioner<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As OrderablePartitioner(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

TLocal

Jenis data thread-local.

Parameter

source
OrderablePartitioner<TSource>

Partisi yang dapat diurutkan yang berisi sumber data asli.

localInit
Func<TLocal>

Delegasi fungsi yang mengembalikan status awal data lokal untuk setiap tugas.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

Delegasi yang dipanggil sekali per perulangan.

localFinally
Action<TLocal>

Delegasi yang melakukan tindakan akhir pada status lokal setiap tugas.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

-atau-

Argumennya localInit adalah null.

-atau-

Argumennya localFinally adalah null.

Properti SupportsDynamicPartitions dalam pengembalian falsesourcePartitioner atau partisi mengembalikan null partisi.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

Delegasi localInit dipanggil sekali untuk setiap tugas yang berpartisipasi dalam eksekusi perulangan dan mengembalikan status lokal awal untuk setiap tugas tersebut. Status awal ini diteruskan ke pemanggilan pertama body pada setiap tugas. Kemudian, setiap pemanggilan isi berikutnya mengembalikan nilai status yang mungkin dimodifikasi yang diteruskan ke pemanggilan isi berikutnya. Akhirnya, pemanggilan isi terakhir pada setiap tugas mengembalikan nilai status yang diteruskan ke localFinally delegasi. Delegasi localFinally dipanggil sekali per tugas untuk melakukan tindakan akhir pada status lokal setiap tugas. Delegasi ini mungkin dipanggil secara bersamaan pada beberapa tugas; oleh karena itu, Anda harus menyinkronkan akses ke variabel bersama apa pun.

Metode ini Parallel.ForEach dapat menggunakan lebih banyak tugas daripada utas selama masa eksekusinya, karena tugas yang ada selesai dan digantikan oleh tugas baru. Ini memberi objek yang mendasar TaskScheduler kesempatan untuk menambahkan, mengubah, atau menghapus utas yang melayani perulangan.

Lihat juga

Berlaku untuk

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di IEnumerable mana iterasi dapat berjalan secara paralel dan opsi perulangan dapat dikonfigurasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

body
Action<TSource>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Dalam CancellationTokenparallelOptions argumen dibatalkan

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan elemen saat ini sebagai parameter.

Lihat juga

Berlaku untuk

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

body
Action<TSource,ParallelLoopState>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

dalam CancellationTokenparallelOptions argumen dibatalkan

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, dan ParallelLoopState instans yang dapat digunakan untuk keluar dari perulangan sebelum waktunya.

Lihat juga

Berlaku untuk

ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

Parameter

source
OrderablePartitioner<TSource>

Partisi yang dapat diurutkan yang berisi sumber data asli.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

body
Action<TSource,ParallelLoopState,Int64>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

dalam CancellationTokenparallelOptions argumen dibatalkan

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Properti SupportsDynamicPartitions dalam partisi yang dapat diurutkan source mengembalikan false.

-atau-

Properti KeysNormalized dalam partisi yang dapat diurutkan source mengembalikan false.

-atau-

Pengecualian yang dilemparkan ketika metode apa pun dalam partisi yang dapat diurutkan source mengembalikan null.

Pengecualian yang dilemparkan berisi pengecualian yang dilemparkan dari salah satu delegasi yang ditentukan.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini Parallel.ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

Lihat juga

Berlaku untuk

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel dan opsi perulangan dapat dikonfigurasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

Parameter

source
Partitioner<TSource>

Partisi yang berisi sumber data asli.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

body
Action<TSource>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Dalam CancellationTokenparallelOptions argumen dibatalkan.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

Properti SupportsDynamicPartitions di partisi source mengembalikan false.

-atau-

Pengecualian yang dilemparkan ketika metode apa pun dalam partisi source mengembalikan null.

Pengecualian yang dilemparkan berisi pengecualian yang dilemparkan dari salah satu delegasi yang ditentukan.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini Parallel.ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

Lihat juga

Berlaku untuk

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan indeks 64-bit di IEnumerable mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

body
Action<TSource,ParallelLoopState,Int64>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

dalam CancellationTokenparallelOptions argumen dibatalkan

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, ParallelLoopState instans yang dapat digunakan untuk keluar dari perulangan sebelum waktunya, dan indeks elemen saat ini (Int64).

Lihat juga

Berlaku untuk

ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Concurrent.Partitioner<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

Parameter

source
Partitioner<TSource>

Partisi yang berisi sumber data asli.

body
Action<TSource,ParallelLoopState>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

Properti SupportsDynamicPartitions di partisi source mengembalikan false.

-atau-

Metode dalam partisi source mengembalikan null.

-atau-

Metode GetPartitions(Int32) dalam partisi source tidak mengembalikan jumlah partisi yang benar.

Pengecualian yang dilemparkan berisi pengecualian yang dilemparkan dari salah satu delegasi yang ditentukan.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini Parallel.ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

Lihat juga

Berlaku untuk

ForEach<TSource>(Partitioner<TSource>, Action<TSource>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Concurrent.Partitioner<TSource> source, Action<TSource> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), body As Action(Of TSource)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

Parameter

source
Partitioner<TSource>

Partisi yang berisi sumber data asli.

body
Action<TSource>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

Properti SupportsDynamicPartitions di partisi source mengembalikan false.

-atau-

Pengecualian yang dilemparkan ketika metode apa pun dalam partisi source mengembalikan null.

-atau-

Metode GetPartitions(Int32) dalam partisi source tidak mengembalikan jumlah partisi yang benar.

Pengecualian yang dilemparkan berisi pengecualian yang dilemparkan dari salah satu delegasi yang ditentukan.

Contoh

Contoh berikut menunjukkan cara mengimplementasikan partisi rentang untuk digunakan dengan Parallel.ForEach:

using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;

class RangePartitionerDemo 
{
        static void Main()
        {
            Stopwatch sw = null;

            long sum = 0;
            long SUMTOP = 10000000;

            // Try sequential for
            sw = Stopwatch.StartNew();
            for (long i = 0; i < SUMTOP; i++) sum += i;
            sw.Stop();
            Console.WriteLine("sequential for result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);

            // Try parallel for -- this is slow!
            //sum = 0;
            //sw = Stopwatch.StartNew();
            //Parallel.For(0L, SUMTOP, (item) => Interlocked.Add(ref sum, item));
            //sw.Stop();
            //Console.WriteLine("parallel for  result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);

            // Try parallel for with locals
            sum = 0;
            sw = Stopwatch.StartNew();
            Parallel.For(0L, SUMTOP, () => 0L, (item, state, prevLocal) => prevLocal + item, local => Interlocked.Add(ref sum, local));
            sw.Stop();
            Console.WriteLine("parallel for w/locals result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);

            // Try range partitioner
            sum = 0;
            sw = Stopwatch.StartNew();
            Parallel.ForEach(Partitioner.Create(0L, SUMTOP), (range) =>
            {
                long local = 0;
                for (long i = range.Item1; i < range.Item2; i++) local += i;
                Interlocked.Add(ref sum, local);
            });
            sw.Stop();
            Console.WriteLine("range partitioner result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);
        }
}
Imports System.Collections.Concurrent
Imports System.Threading
Imports System.Threading.Tasks

Module RangePartitionerDemo

    Sub Main()
        Dim sw As Stopwatch = Nothing

        Dim sum As Long = 0
        Dim SUMTOP As Long = 10000000

        ' Try sequential for
        sw = Stopwatch.StartNew()
        For i As Long = 0 To SUMTOP - 1
            sum += i
        Next
        sw.Stop()
        Console.WriteLine("sequential for result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)

        ' Try parallel for with locals
        sum = 0
        sw = Stopwatch.StartNew()
        Parallel.For(0L, SUMTOP, Function() 0L, Function(item, state, prevLocal) prevLocal + item, Function(local) Interlocked.Add(sum, local))
        sw.Stop()
        Console.WriteLine("parallel for w/locals result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)

        ' Try range partitioner
        sum = 0
        sw = Stopwatch.StartNew()
        Parallel.ForEach(Partitioner.Create(0L, SUMTOP),
                         Sub(range)
                             Dim local As Long = 0
                             For i As Long = range.Item1 To range.Item2 - 1
                                 local += i
                             Next
                             Interlocked.Add(sum, local)
                         End Sub)
        sw.Stop()
        Console.WriteLine("range partitioner result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)
    End Sub

End Module

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini Parallel.ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

Lihat juga

Berlaku untuk

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) dengan indeks 64-bit di IEnumerable mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Generic.IEnumerable<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : seq<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

body
Action<TSource,ParallelLoopState,Int64>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, ParallelLoopState instans yang dapat digunakan untuk keluar dari perulangan sebelum waktunya, dan indeks elemen saat ini (Int64).

Lihat juga

Berlaku untuk

ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di OrderablePartitioner<TSource> mana iterasi dapat berjalan secara paralel dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Concurrent.OrderablePartitioner<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As OrderablePartitioner(Of TSource), body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

Parameter

source
OrderablePartitioner<TSource>

Partisi yang dapat diurutkan yang berisi sumber data asli.

body
Action<TSource,ParallelLoopState,Int64>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

Properti SupportsDynamicPartitions dalam partisi yang dapat diurutkan source mengembalikan false.

-atau-

Properti KeysNormalized di partisi sumber yang dapat diurutkan mengembalikan false.

-atau-

Metode apa pun dalam partisi sumber yang dapat diurutkan mengembalikan null.

Pengecualian dilemparkan dari salah satu delegasi yang ditentukan.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini Parallel.ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

Lihat juga

Berlaku untuk

ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di mana iterasi IEnumerable dapat berjalan secara paralel.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Generic.IEnumerable<TSource> source, Action<TSource> body);
static member ForEach : seq<'Source> * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

body
Action<TSource>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Contoh

Contoh berikut menggunakan ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) metode untuk menghitung jumlah vokal dan karakter non-spasi putih dalam file teks. Dalam hal ini, nilai yang ParallelLoopResult dikembalikan oleh metode diabaikan. Perhatikan bahwa, karena operasi dapat berjalan secara paralel, Anda harus memastikan bahwa penambahan variabel penghitung adalah operasi atomik, dan bahwa beberapa utas tidak mencoba mengakses variabel penghitung secara bersamaan. Untuk tujuan ini, contohnya menggunakan lock pernyataan (dalam C#) dan SyncLock pernyataan (di Visual Basic).

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task<String> task = ReadCharacters(@".\CallOfTheWild.txt");
      String text = task.Result;
      
      int nVowels = 0;
      int nNonWhiteSpace = 0;
      Object obj = new Object();

      ParallelLoopResult result = Parallel.ForEach(text, 
                                                   (ch) => {
                                                      Char uCh = Char.ToUpper(ch);
                                                      if ("AEIOUY".IndexOf(uCh) >= 0) {
                                                         lock (obj) {
                                                            nVowels++;
                                                         }
                                                      }
                                                      if (! Char.IsWhiteSpace(uCh)) {
                                                         lock (obj) {
                                                            nNonWhiteSpace++;
                                                         }   
                                                      }
                                                   } );
      Console.WriteLine("Total characters:      {0,10:N0}", text.Length);
      Console.WriteLine("Total vowels:          {0,10:N0}", nVowels);
      Console.WriteLine("Total non-white-space:  {0,10:N0}", nNonWhiteSpace);
   }

   private static async Task<String> ReadCharacters(String fn)
   {
      String text;
      using (StreamReader sr = new StreamReader(fn)) {
         text = await sr.ReadToEndAsync();
      }
      return text;
   }
}
// The example displays output like the following:
//       Total characters:         198,548
//       Total vowels:              58,421
//       Total non-white-space:     159,461
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim task As Task(Of String) = ReadCharacters(".\CallOfTheWild.txt")
      Dim text As String = task.Result
      
      Dim nVowels As Integer = 0
      Dim nNonWhiteSpace As Integer = 0
      Dim obj As New Object()

      Dim result As ParallelLoopResult = Parallel.ForEach(text, 
                                                          Sub(ch)
                                                             Dim uCh As Char = Char.ToUpper(ch)
                                                             If "AEIOUY".IndexOf(uCh) >= 0 Then
                                                                SyncLock obj
                                                                   nVowels += 1
                                                                End SyncLock
                                                             End If
                                                             If Not Char.IsWhiteSpace(uCh) Then
                                                                SyncLock obj
                                                                   nNonWhiteSpace += 1
                                                                End SyncLock   
                                                             End If
                                                          End Sub)
      Console.WriteLine("Total characters:      {0,10:N0}", text.Length)
      Console.WriteLine("Total vowels:          {0,10:N0}", nVowels)
      Console.WriteLine("Total non-white space:  {0,10:N0}", nNonWhiteSpace)
   End Sub
   
   Private Async Function ReadCharacters(fn As String) As Task(Of String)
      Dim text As String
      Using sr As New StreamReader(fn)
         text = Await sr.ReadToEndAsync()
      End Using
      Return text
   End Function
End Module
' The output from the example resembles the following:
'       Total characters:         198,548
'       Total vowels:              58,421
'       Total non-white space:     159,461

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan elemen saat ini sebagai parameter.

Lihat juga

Berlaku untuk

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di Partitioner mana iterasi dapat berjalan secara paralel, opsi perulangan dapat dikonfigurasi, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Jenis parameter

TSource

Jenis elemen di source.

Parameter

source
Partitioner<TSource>

Partisi yang berisi sumber data asli.

parallelOptions
ParallelOptions

Objek yang mengonfigurasi perilaku operasi ini.

body
Action<TSource,ParallelLoopState>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Dalam CancellationTokenparallelOptions argumen dibatalkan.

yang CancellationTokenSource terkait dengan CancellationToken di parallelOptions telah dibuang.

Argumennya source adalah null.

-atau-

Argumennya parallelOptions adalah null.

-atau-

Argumennya body adalah null.

Properti SupportsDynamicPartitions di partisi source mengembalikan false.

-atau-

Pengecualian yang dilemparkan ketika metode apa pun dalam partisi source mengembalikan null.

Pengecualian yang dilemparkan berisi pengecualian yang dilemparkan dari salah satu delegasi yang ditentukan.

Keterangan

Kelebihan beban ini disediakan untuk skenario di mana Anda ingin mengambil alih skema partisi default. Misalnya, badan perulangan kecil mungkin mendapat manfaat dari pemartisian rentang. Metode ini Parallel.ForEach mengharapkan partisi kustom untuk mendukung partisi dinamis. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Cara: Menerapkan Partisi Dinamis.

Lihat juga

Berlaku untuk

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)

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

foreach Menjalankan operasi (For Each dalam Visual Basic) di IEnumerable mana iterasi dapat berjalan secara paralel, dan status perulangan dapat dipantau dan dimanipulasi.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource> (System.Collections.Generic.IEnumerable<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : seq<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Jenis parameter

TSource

Jenis data dalam sumber.

Parameter

source
IEnumerable<TSource>

Sumber data yang dapat dijumlahkan.

body
Action<TSource,ParallelLoopState>

Delegasi yang dipanggil sekali per iterasi.

Mengembalikan

Struktur yang berisi informasi tentang bagian perulangan mana yang selesai.

Pengecualian

Argumennya source adalah null.

-atau-

Argumennya body adalah null.

Pengecualian yang berisi semua pengecualian individu yang dilemparkan pada semua utas.

Keterangan

Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan parameter berikut: elemen saat ini, dan ParallelLoopState instans yang dapat digunakan untuk keluar dari perulangan sebelum waktunya.

Lihat juga

Berlaku untuk