Parallel.ForEach Yöntem

Tanım

Yinelemelerin paralel olarak çalışabileceği bir foreach (For Each Visual Basic) işlemini yürütür.

Aşırı Yüklemeler

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

Yinelemelerin paralel olarak çalıştırılabildiği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileri ve 64 bit dizinlerle bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner üzerinde iş parçacığı yerel verileriyle yürütür.

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

Yinelemelerin paralel olarak çalışabileceği bir OrderablePartitioner<TSource> üzerinde 64 bit dizinler ve iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemi yürütür, döngü seçenekleri yapılandırılabilir ve döngünün durumu izlenebilir ve işlenebilir.

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

foreach (Visual Basic For Each) işlemini yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebilir olduğu bir IEnumerable üzerinde iş parçacığı yerel verileriyle yürütür.

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

Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemini yürütür.

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

foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir Partitioner üzerinde iş parçacığı yerel verileriyle yürütür.

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

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir OrderablePartitioner<TSource> üzerinde iş parçacığı yerel verileriyle yürütür.

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

Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir IEnumerable üzerinde bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırıldığı ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir foreach (Visual Basic içinde For Each) işlemi yürütür.

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

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir OrderablePartitioner<TSource> yürütür.

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

Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir Partitioner üzerinde foreach (Visual Basic'da For Each) işlemi yürütür.

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

Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir <2 /> üzerinde 64 bit dizinler içeren bir (Visual Basic ) işlemi yürütür.

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

foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner yürütür.

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

Yinelemelerin paralel olarak çalışabileceği bir Partitioner üzerinde bir foreach (Visual Basic'da For Each) işlemi yürütür.

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

Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde 64 bit dizinler içeren bir foreach (For Each Visual Basic) işlemi yürütür.

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

foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir OrderablePartitioner<TSource> yürütür.

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

Yinelemelerin paralel olarak çalışabileceği bir IEnumerable üzerinde bir foreach (For Each Visual Basic) işlemi yürütür.

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

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner yürütür.

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

Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalıştırılabildiği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit bağımsız değişkenidirnull.

-veya-

localFinally bağımsız değişkenidirnull.

CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğesi, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.

Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için iş parçacığı başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileri ve 64 bit dizinlerle bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

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

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit bağımsız değişkenidirnull.

-veya-

localFinally bağımsız değişkenidirnull.

CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek, geçerli öğenin dizini ()Int64 ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.

Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için iş parçacığı başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner üzerinde iş parçacığı yerel verileriyle yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
Partitioner<TSource>

Özgün veri kaynağını içeren bölümleyici.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit bağımsız değişkenidirnull.

-veya-

localFinally bağımsız değişkenidirnull.

SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Bu aşırı yükleme, statik aralık bölümlemesinden yararlanabilecek küçük döngü gövdelerine sahip senaryolar için sağlanır. Bölümleyiciler dinamik bölümleri desteklemelidir. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği bir OrderablePartitioner<TSource> üzerinde 64 bit dizinler ve iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemi yürütür, döngü seçenekleri yapılandırılabilir ve döngünün durumu izlenebilir ve işlenebilir.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
OrderablePartitioner<TSource>

Özgün veri kaynağını içeren sıralanabilir bölümleyici.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

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

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit veya localFinally bağımsız değişkenidirnull.

SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her iş parçacığındaki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (Visual Basic For Each) işlemini yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebilir olduğu bir IEnumerable üzerinde iş parçacığı yerel verileriyle yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit bağımsız değişkenidirnull.

-veya-

localFinally bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Örnekler

Aşağıdaki örnekte bir yöntemin yerel durumla nasıl kullanılacağı ForEach gösterilmektedir:

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

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğesi, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.

Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için iş parçacığı başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemini yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

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

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit bağımsız değişkenidirnull.

-veya-

localFinally bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek, geçerli öğenin dizini ()Int64 ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.

Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir Partitioner üzerinde iş parçacığı yerel verileriyle yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
Partitioner<TSource>

Özgün veri kaynağını içeren bölümleyici.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit bağımsız değişkenidirnull.

-veya-

localFinally bağımsız değişkenidirnull.

SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Temsilci localInit , döngünün yürütülmesine katılan her iş parçacığı için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir OrderablePartitioner<TSource> üzerinde iş parçacığı yerel verileriyle yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

TLocal

İş parçacığı yerel verilerinin türü.

Parametreler

source
OrderablePartitioner<TSource>

Özgün veri kaynağını içeren sıralanabilir bölümleyici.

localInit
Func<TLocal>

Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.

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

Yineleme başına bir kez çağrılan temsilci.

localFinally
Action<TLocal>

Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

-veya-

localInit bağımsız değişkenidirnull.

-veya-

localFinally bağımsız değişkenidirnull.

SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.

Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir IEnumerable üzerinde bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

body
Action<TSource>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Geçerli öğe parametre olarak sağlanır.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırıldığı ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir foreach (Visual Basic içinde For Each) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

body
Action<TSource,ParallelLoopState>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe ve döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir OrderablePartitioner<TSource> yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

Parametreler

source
OrderablePartitioner<TSource>

Özgün veri kaynağını içeren sıralanabilir bölümleyici.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

body
Action<TSource,ParallelLoopState,Int64>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

SupportsDynamicPartitions Sıralanabilir bölümleyicideki source özelliği döndürürfalse.

-veya-

KeysNormalized Sıralanabilir bölümleyicideki source özelliği döndürürfalse.

-veya-

Sıralanabilir bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.

Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir Partitioner üzerinde foreach (Visual Basic'da For Each) işlemi yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

Parametreler

source
Partitioner<TSource>

Özgün veri kaynağını içeren bölümleyici.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

body
Action<TSource>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.

-veya-

Bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.

Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir <2 /> üzerinde 64 bit dizinler içeren bir (Visual Basic ) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

body
Action<TSource,ParallelLoopState,Int64>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve geçerli öğenin dizini (Int64).

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

Parametreler

source
Partitioner<TSource>

Özgün veri kaynağını içeren bölümleyici.

body
Action<TSource,ParallelLoopState>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.

-veya-

Bölümleyicideki source bir yöntem döndürür null.

-veya-

Bölümleyicideki GetPartitions(Int32)source yöntemi doğru sayıda bölüm döndürmez.

Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği bir Partitioner üzerinde bir foreach (Visual Basic'da For Each) işlemi yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

Parametreler

source
Partitioner<TSource>

Özgün veri kaynağını içeren bölümleyici.

body
Action<TSource>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.

-veya-

Bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.

-veya-

Bölümleyicideki GetPartitions(Int32)source yöntemi doğru sayıda bölüm döndürmez.

Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.

Örnekler

Aşağıdaki örnekte ile Parallel.ForEachkullanmak üzere bir aralık bölümleyicinin nasıl uygulanacakları gösterilmektedir:

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

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde 64 bit dizinler içeren bir foreach (For Each Visual Basic) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

body
Action<TSource,ParallelLoopState,Int64>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve geçerli öğenin dizini (Int64).

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir OrderablePartitioner<TSource> yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

Parametreler

source
OrderablePartitioner<TSource>

Özgün veri kaynağını içeren sıralanabilir bölümleyici.

body
Action<TSource,ParallelLoopState,Int64>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

SupportsDynamicPartitions Sıralanabilir bölümleyicideki source özelliği döndürürfalse.

-veya-

KeysNormalized Kaynak sıralanabilir bölümleyicideki özelliği döndürürfalse.

-veya-

Kaynak sıralanabilir bölümleyicideki tüm yöntemler döndürür null.

Belirtilen temsilcilerden birinden oluşan özel durum.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalışabileceği bir IEnumerable üzerinde bir foreach (For Each Visual Basic) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

body
Action<TSource>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Örnekler

Aşağıdaki örnek, bir metin dosyasındaki ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) ünlü ve boşluk olmayan karakterleri saymak için yöntemini kullanır. Bu durumda, ParallelLoopResult yöntemi tarafından döndürülen değer yoksayılır. İşlemler paralel olarak çalışabildiğinden, sayaç değişkenlerini artırmanın atomik bir işlem olduğundan ve birden çok iş parçacığının sayaç değişkenlerine aynı anda erişmeye çalışmadığından emin olmanız gerektiğini unutmayın. Bu amaçla, örnek lock deyimini (C#'da) ve SyncLock deyimini (Visual Basic içinde) kullanır.

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

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Geçerli öğe parametre olarak sağlanır.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner yürütür.

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

Tür Parametreleri

TSource

içindeki sourceöğelerin türü.

Parametreler

source
Partitioner<TSource>

Özgün veri kaynağını içeren bölümleyici.

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

body
Action<TSource,ParallelLoopState>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.

CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.

source bağımsız değişkenidirnull.

-veya-

parallelOptions bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.

-veya-

Bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.

Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.

Açıklamalar

Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.

Şunlara uygulanır

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

Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs
Kaynak:
Parallel.cs

Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir foreach (Visual Basic'de For Each) işlemi yürütür.

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

Tür Parametreleri

TSource

Kaynaktaki verilerin türü.

Parametreler

source
IEnumerable<TSource>

Numaralandırılabilir bir veri kaynağı.

body
Action<TSource,ParallelLoopState>

Yineleme başına bir kez çağrılan temsilci.

Döndürülenler

Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.

Özel durumlar

source bağımsız değişkenidirnull.

-veya-

body bağımsız değişkenidirnull.

Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.

Açıklamalar

Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe ve döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek.

Şunlara uygulanır