Parallel.ForEach 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 operasi foreach (For Each dalam Visual Basic) di mana perulangan dapat berjalan secara paralel.
Overload
| Nama | Deskripsi |
|---|---|
| ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) |
Menjalankan operasi |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Menjalankan operasi |
| ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Menjalankan operasi |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) |
Menjalankan operasi |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Menjalankan operasi |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>) |
Menjalankan operasi |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource>) |
Menjalankan operasi |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Menjalankan operasi |
| ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Menjalankan operasi |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) |
Menjalankan operasi |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Menjalankan operasi |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>) |
Menjalankan operasi |
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan data lokal utas pada IEnumerable di 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 di 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 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.
Dalam CancellationTokenparallelOptions argumen dibatalkan.
Yang CancellationTokenSource terkait dengan CancellationToken dalam parallelOptions 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 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. Terakhir, 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 pakai 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.
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
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan data lokal utas dan indeks 64-bit pada IEnumerable di 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 di 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 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.
Dalam CancellationTokenparallelOptions argumen dibatalkan.
Yang CancellationTokenSource terkait dengan CancellationToken dalam parallelOptions 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, 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. Terakhir, 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 pakai 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.
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
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan data lokal utas pada Partitioner di mana perulangan 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 dalam 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.
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. Terakhir, 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 pakai 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.
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
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan indeks 64-bit dan dengan data lokal utas pada OrderablePartitioner<TSource> di 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
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 dalam 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.
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. Terakhir, pemanggilan isi terakhir pada setiap utas 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 pakai 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.
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
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan data lokal utas pada IEnumerable di 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 di 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 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. Terakhir, 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 pakai 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.
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
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan data lokal utas pada IEnumerable di 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 di 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 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.
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, 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. Terakhir, 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 pakai 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.
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
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan data lokal utas pada Partitioner di 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 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.
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. Terakhir, 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 pakai 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.
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
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan data lokal utas pada OrderablePartitioner<TSource> di mana perulangan 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
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 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.
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. Terakhir, 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 pakai 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.
Berlaku untuk
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada IEnumerable di mana perulangan 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 di 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 dalam parallelOptions telah dibuang.
Keterangan
Delegasi body dipanggil sekali untuk setiap elemen dalam source enumerable. Ini disediakan dengan elemen saat ini sebagai parameter.
Berlaku untuk
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada IEnumerable di 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 di 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 dalam 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.
Berlaku untuk
ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada OrderablePartitioner<TSource> di 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
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 dalam parallelOptions telah dibuang.
Properti SupportsDynamicPartitions dalam partisi yang dapat diurutkan sourcefalsemengembalikan .
-atau-
Properti KeysNormalized dalam partisi yang dapat diurutkan sourcefalsemengembalikan .
-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.
Berlaku untuk
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each di Visual Basic) pada Partitioner di mana perulangan 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 dalam parallelOptions telah dibuang.
Argumennya source adalah null.
-atau-
Argumennya parallelOptions adalah null.
-atau-
Argumennya body adalah null.
Properti SupportsDynamicPartitions dalam partisi source mengembalikan false.
-atau-
Pengecualian yang dilemparkan ketika metode apa pun dalam source partisi 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.
Berlaku untuk
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan indeks 64-bit pada IEnumerable di 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 di 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 dalam 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).
Berlaku untuk
ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada Partitioner di 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
Properti SupportsDynamicPartitions dalam 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.
Berlaku untuk
ForEach<TSource>(Partitioner<TSource>, Action<TSource>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada Partitioner di 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
Properti SupportsDynamicPartitions dalam partisi source mengembalikan false.
-atau-
Pengecualian yang dilemparkan ketika metode apa pun dalam source partisi 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.
Berlaku untuk
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) dengan indeks 64-bit pada IEnumerable di 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 di 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
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).
Berlaku untuk
ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada OrderablePartitioner<TSource> di 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
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
Properti SupportsDynamicPartitions dalam partisi yang dapat diurutkan sourcefalsemengembalikan .
-atau-
Properti KeysNormalized dalam partisi sumber yang dapat diurutkan falsemengembalikan .
-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.
Berlaku untuk
ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada IEnumerable di mana iterasi 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 di 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
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, contoh menggunakan pernyataan lock (dalam C#) dan pernyataan SyncLock (dalam 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.
Berlaku untuk
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada Partitioner di 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 dalam parallelOptions telah dibuang.
Argumennya source adalah null.
-atau-
Argumennya parallelOptions adalah null.
-atau-
Argumennya body adalah null.
Properti SupportsDynamicPartitions dalam partisi source mengembalikan false.
-atau-
Pengecualian yang dilemparkan ketika metode apa pun dalam source partisi 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.
Berlaku untuk
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
- Sumber:
- Parallel.cs
Menjalankan operasi foreach (For Each dalam Visual Basic) pada IEnumerable di 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 di 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
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.