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.
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 ( |
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
|
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>) |
|
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>) |
|
ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
|
ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Menjalankan operasi ( |
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) |
|
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
|
ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
|
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) |
|
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
|
ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>) |
|
ForEach<TSource>(Partitioner<TSource>, Action<TSource>) |
|
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>) |
|
ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>) |
|
ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) |
|
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
|
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>) |
|
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 false
source
Partitioner 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
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 false
source
Partitioner 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 false
source
Partitioner 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
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 false
source
Partitioner 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
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
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
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
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
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 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
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
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.