Parallel.ForEach Metoda

Definice

Spustí operaci foreach (For Each v Visual Basic), ve které se iterace můžou spouštět paralelně.

Přetížení

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

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na IEnumerable, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna a 64bitovými indexy na IEnumerable, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na Partitioner, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) s 64bitovými indexy a s daty místního vlákna na OrderablePartitioner<TSource>, ve kterých se iterace můžou spouštět paralelně, možnosti smyčky lze konfigurovat a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na IEnumerable, ve kterých se iterace můžou spouštět paralelně, a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na IEnumerable, ve kterých se iterace můžou spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na Partitioner, ve kterých se iterace můžou spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na OrderablePartitioner<TSource>, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) v IEnumerable, ve které se můžou iterace spouštět paralelně a možnosti smyčky.

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

Spustí operaci foreach (For Each v Visual Basic) na IEnumerable, ve které se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) na OrderablePartitioner<TSource>, ve které se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) v Partitioner, ve které se můžou iterace spouštět paralelně a možnosti smyčky lze konfigurovat.

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

Spustí operaci foreach (For Each v Visual Basic) s 64bitovými indexy na IEnumerable, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ním.

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

Spustí operaci foreach (For Each v Visual Basic) v Partitioner, ve které se mohou iterace spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) na Partitioner, ve které se mohou iterace spouštět paralelně.

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

Spustí operaci foreach (For Each v Visual Basic) s 64bitovými indexy na IEnumerable, ve kterém se iterace můžou spouštět paralelně, a stav smyčky lze monitorovat a manipulovat s ním.

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

Spustí operaci foreach (For Each v Visual Basic) na OrderablePartitioner<TSource>, ve které se iterace můžou spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) v IEnumerable, ve které se mohou iterace spouštět paralelně.

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

Spustí operaci foreach (For Each v Visual Basic) na Partitioner, ve které se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Spustí operaci foreach (For Each v Visual Basic) na IEnumerable, ve které se iterace můžou spouštět paralelně, a stav smyčky lze monitorovat a manipulovat s nimi.

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na IEnumerable, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ dat ve zdroji.

TLocal

Typ místních dat vlákna.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

nebo

Argument localInit je null.

nebo

Argument localFinally je null.

Argument CancellationToken je parallelOptions zrušen.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek, instance, ParallelLoopState která se může použít k předčasnému přerušení smyčky, a některé místní stavy, které mohou být sdíleny mezi iteracemi, které se spouští ve stejném vlákně.

Delegát localInit se vyvolá jednou pro každý úkol, který se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu u každého úkolu vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za vlákno, aby provedl konečnou akci v místním stavu každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna a 64bitovými indexy na IEnumerable, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ dat ve zdroji.

TLocal

Typ místních dat vlákna.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

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

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

nebo

Argument localInit je null.

nebo

Argument localFinally je null.

Argument CancellationToken je parallelOptions zrušen.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek, instance, ParallelLoopState která se může použít k předčasnému přerušení smyčky, indexu aktuálního prvku (Int64) a některého místního stavu, který se může sdílet mezi iteracemi, které se spouští ve stejném vlákně.

Delegát localInit se vyvolá jednou pro každý úkol, který se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu u každého úkolu vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za vlákno, aby provedl konečnou akci v místním stavu každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na Partitioner, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

TLocal

Typ místních dat vlákna.

Parametry

source
Partitioner<TSource>

Rozdělovač, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

nebo

Argument localInit je null.

nebo

Argument localFinally je null.

Vlastnost SupportsDynamicPartitions v sourcePartitioner vrácené false části nebo partitioner vrací null oddíly.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Argument CancellationToken je parallelOptions zrušen.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Toto přetížení je poskytováno ve scénářích s malými těly smyčky, které můžou těžit z dělení statického rozsahu. Oddíly musí podporovat dynamické oddíly. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Delegát localInit se vyvolá jednou pro každý úkol, který se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu u každého úkolu vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za úkol, aby provedl konečnou akci pro místní stav každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s 64bitovými indexy a s daty místního vlákna na OrderablePartitioner<TSource>, ve kterých se iterace můžou spouštět paralelně, možnosti smyčky lze konfigurovat a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

TLocal

Typ místních dat vlákna.

Parametry

source
OrderablePartitioner<TSource>

Seřazený rozdělovač, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

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

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

nebo

Argument localInit je localFinallynull.

Vlastnost SupportsDynamicPartitions v sourcePartitioner vrácené false části nebo partitioner vrací null oddíly.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Argument CancellationToken je parallelOptions zrušen.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Delegát localInit se vyvolá jednou pro každý úkol, který se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu v každém vlákně vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za úkol, aby provedl konečnou akci pro místní stav každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na IEnumerable, ve kterých se iterace můžou spouštět paralelně, a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ dat ve zdroji.

TLocal

Typ místních dat vlákna.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

nebo

Argument localInit je null.

nebo

Argument localFinally je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Příklady

Následující příklad ukazuje, jak použít metodu s místním stavem ForEach :

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

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek, instance, ParallelLoopState která se může použít k předčasnému přerušení smyčky, a některé místní stavy, které mohou být sdíleny mezi iteracemi, které se spouští ve stejném vlákně.

Delegát localInit se vyvolá jednou pro každý úkol, který se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu u každého úkolu vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za vlákno, aby provedl konečnou akci v místním stavu každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na IEnumerable, ve kterých se iterace můžou spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ dat ve zdroji.

TLocal

Typ místních dat vlákna.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

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

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

nebo

Argument localInit je null.

nebo

Argument localFinally je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek, instance, ParallelLoopState která se může použít k předčasnému přerušení smyčky, indexu aktuálního prvku (Int64) a některého místního stavu, který se může sdílet mezi iteracemi, které se spouští ve stejném vlákně.

Delegát localInit se vyvolá jednou pro každý úkol, který se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu u každého úkolu vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za úkol, aby provedl konečnou akci pro místní stav každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na Partitioner, ve kterých se iterace můžou spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

TLocal

Typ místních dat vlákna.

Parametry

source
Partitioner<TSource>

Rozdělovač, který obsahuje původní zdroj dat.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

nebo

Argument localInit je null.

nebo

Argument localFinally je null.

Vlastnost SupportsDynamicPartitions v sourcePartitioner vrácené false části nebo partitioner vrací null oddíly.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Delegát localInit se vyvolá jednou pro každé vlákno, které se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu u každého úkolu vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za úkol, aby provedl konečnou akci pro místní stav každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s místními daty vlákna na OrderablePartitioner<TSource>, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

TLocal

Typ místních dat vlákna.

Parametry

source
OrderablePartitioner<TSource>

Seřazený rozdělovač, který obsahuje původní zdroj dat.

localInit
Func<TLocal>

Delegát funkce, který vrátí počáteční stav místních dat pro každý úkol.

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

Delegát, který se vyvolá jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provádí konečnou akci pro místní stav každého úkolu.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

nebo

Argument localInit je null.

nebo

Argument localFinally je null.

Vlastnost SupportsDynamicPartitions v sourcePartitioner vrácené false části nebo partitioner vrací null oddíly.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Delegát localInit se vyvolá jednou pro každý úkol, který se účastní provádění smyčky, a vrátí počáteční místní stav pro každý z těchto úkolů. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Potom každé následné vyvolání těla vrátí pravděpodobně upravenou hodnotu stavu, která se předá dalšímu vyvolání těla. Nakonec poslední vyvolání textu u každého úkolu vrátí hodnotu stavu, která se předá delegátovi localFinally . Delegát localFinally se vyvolá jednou za úkol, aby provedl konečnou akci pro místní stav každého úkolu. Tento delegát může být vyvolán souběžně u více úloh; proto je nutné synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vlákna po celou dobu jeho provádění, protože stávající úkoly jsou dokončeny a jsou nahrazeny novými úkoly. Tím získá základní TaskScheduler objekt šanci přidat, změnit nebo odebrat vlákna, která smyčku obsluhují.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) v IEnumerable, ve které se můžou iterace spouštět paralelně a možnosti smyčky.

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

Parametry typu

TSource

Typ dat ve zdroji.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

body
Action<TSource>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

parallelOptions Argument CancellationToken je zrušen.

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Je k dispozici s aktuálním prvkem jako parametr.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) na IEnumerable, ve které se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ dat ve zdroji.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

body
Action<TSource,ParallelLoopState>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

parallelOptions Argument CancellationToken je zrušen.

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek a ParallelLoopState instanci, která se může použít k předčasnému přerušení smyčky.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) na OrderablePartitioner<TSource>, ve které se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

Parametry

source
OrderablePartitioner<TSource>

Seřazený rozdělovač, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

body
Action<TSource,ParallelLoopState,Int64>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

parallelOptions Argument CancellationToken je zrušen.

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Vlastnost SupportsDynamicPartitions v seřazené dělicí rutině source vrátí false.

nebo

Vlastnost KeysNormalized v seřazené dělicí rutině source vrátí false.

nebo

Výjimka, která je vyvolán v případě, že některé metody v source seřazení partitioner vrátí null.

Výjimka vyvolaná tak, aby obsahovala výjimku vyvolanou některou ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato Parallel.ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) v Partitioner, ve které se můžou iterace spouštět paralelně a možnosti smyčky lze konfigurovat.

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

Parametry typu

TSource

Typ prvků v .source

Parametry

source
Partitioner<TSource>

Rozdělovač, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

body
Action<TSource>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument CancellationToken je parallelOptions zrušen.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

Vlastnost SupportsDynamicPartitions v source partitioneru vrátí false.

nebo

Výjimka, která je vyvolán, když některé metody v oddíleru source vrátí null.

Výjimka vyvolaná tak, aby obsahovala výjimku vyvolanou některou ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato Parallel.ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s 64bitovými indexy na IEnumerable, ve kterých se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ním.

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

Parametry typu

TSource

Typ dat ve zdroji.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

body
Action<TSource,ParallelLoopState,Int64>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

parallelOptions Argument CancellationToken je zrušen.

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek, instance, ParallelLoopState která se může použít k předčasnému přerušení smyčky, a index aktuálního elementu (Int64).

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) v Partitioner, ve které se mohou iterace spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

Parametry

source
Partitioner<TSource>

Rozdělovač, který obsahuje původní zdroj dat.

body
Action<TSource,ParallelLoopState>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

Vlastnost SupportsDynamicPartitions v source partitioneru vrátí false.

nebo

Metoda v source partitioner vrátí null.

nebo

Metoda GetPartitions(Int32) v source partitioneru nevrací správný počet oddílů.

Výjimka vyvolaná tak, aby obsahovala výjimku vyvolanou některou ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato Parallel.ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) na Partitioner, ve které se mohou iterace spouštět paralelně.

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

Parametry typu

TSource

Typ prvků v .source

Parametry

source
Partitioner<TSource>

Rozdělovač, který obsahuje původní zdroj dat.

body
Action<TSource>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

Vlastnost SupportsDynamicPartitions v source partitioneru vrátí false.

nebo

Výjimka, která je vyvolán, když některé metody v oddíleru source vrátí null.

nebo

Metoda GetPartitions(Int32) v source partitioneru nevrací správný počet oddílů.

Výjimka vyvolaná tak, aby obsahovala výjimku vyvolanou některou ze zadaných delegátů.

Příklady

Následující příklad ukazuje, jak implementovat rozdělovač rozsahu pro použití s 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

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato Parallel.ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) s 64bitovými indexy na IEnumerable, ve kterém se iterace můžou spouštět paralelně, a stav smyčky lze monitorovat a manipulovat s ním.

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

Parametry typu

TSource

Typ dat ve zdroji.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

body
Action<TSource,ParallelLoopState,Int64>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek, instance, ParallelLoopState která se může použít k předčasnému přerušení smyčky, a index aktuálního elementu (Int64).

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) na OrderablePartitioner<TSource>, ve které se iterace můžou spouštět paralelně a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

Parametry

source
OrderablePartitioner<TSource>

Seřazený rozdělovač, který obsahuje původní zdroj dat.

body
Action<TSource,ParallelLoopState,Int64>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

Vlastnost SupportsDynamicPartitions v seřazené dělicí rutině source vrátí false.

nebo

Vlastnostveho KeysNormalizedfalse

nebo

Všechny metody ve zdrojovém seřazené dělení vrátí null.

Výjimka vyvolaná některým ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato Parallel.ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) v IEnumerable, ve které se mohou iterace spouštět paralelně.

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

Parametry typu

TSource

Typ dat ve zdroji.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

body
Action<TSource>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Příklady

Následující příklad používá metodu ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) k počítání počtu samohlásek a neprázdných znaků v textovém souboru. V tomto případě ParallelLoopResult je hodnota vrácená metodou ignorována. Mějte na paměti, že protože operace mohou běžet paralelně, je nutné zajistit, aby zvýšení proměnných čítače byla atomická operace a že se více vláken nepokoušá o přístup k proměnným čítače současně. Pro tento účel používá příklad příkaz lock (v jazyce C#) a příkaz SyncLock (v 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

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Je k dispozici s aktuálním prvkem jako parametr.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) na Partitioner, ve které se mohou iterace spouštět paralelně, lze konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ prvků v .source

Parametry

source
Partitioner<TSource>

Rozdělovač, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

Objekt, který konfiguruje chování této operace.

body
Action<TSource,ParallelLoopState>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument CancellationToken je parallelOptions zrušen.

Přidružené CancellationTokenSource k vyřazení CancellationTokenparallelOptions bylo odstraněno.

Argument source je null.

nebo

Argument parallelOptions je null.

nebo

Argument body je null.

Vlastnost SupportsDynamicPartitions v source partitioneru vrátí false.

nebo

Výjimka, která je vyvolán, když některé metody v oddíleru source vrátí null.

Výjimka vyvolaná tak, aby obsahovala výjimku vyvolanou některou ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici ve scénářích, ve kterých chcete přepsat výchozí schéma dělení. Například malé těla smyčky můžou těžit z rozdělení rozsahu. Tato Parallel.ForEach metoda očekává, že vlastní dělitelé podporují dynamické dělení. Další informace naleznete v tématu Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Platí pro

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

Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs
Zdroj:
Parallel.cs

Spustí operaci foreach (For Each v Visual Basic) na IEnumerable, ve které se iterace můžou spouštět paralelně, a stav smyčky lze monitorovat a manipulovat s nimi.

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

Parametry typu

TSource

Typ dat ve zdroji.

Parametry

source
IEnumerable<TSource>

Výčtový zdroj dat.

body
Action<TSource,ParallelLoopState>

Delegát, který se vyvolá jednou za iteraci.

Návraty

Struktura, která obsahuje informace o tom, která část smyčky byla dokončena.

Výjimky

Argument source je null.

nebo

Argument body je null.

Výjimka, která obsahuje všechny jednotlivé výjimky vyvolané ve všech vláknech.

Poznámky

Delegát body je vyvolán jednou pro každý prvek v výčtu source . Poskytuje se s následujícími parametry: aktuální prvek a ParallelLoopState instanci, která se může použít k předčasnému přerušení smyčky.

Platí pro