Sdílet prostřednictvím


Parallel.ForEach Metoda

Definice

Spustí foreach operaci (For Each v jazyce Visual Basic), ve které mohou paralelně běžet iterace.

Přetížení

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

Provede foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na objektu IEnumerable , ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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

foreach Provede operaci (For Eachv jazyce Visual Basic) s místními daty vlákna a 64bitovými indexy na objektuIEnumerable, ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na Partitioner zařízení, ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci (For Each v jazyce Visual Basic) s 64bitovými indexy a s místními daty vlákna na objektu OrderablePartitioner<TSource> , ve kterém mohou běžet paralelně iterace , je možné nakonfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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

Spustí foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na objektu IEnumerable , ve kterém mohou běžet paralelně iterace a stav smyčky lze monitorovat a manipulovat s ním.

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

Provede foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na objektu IEnumerable , ve kterém mohou běžet paralelně iterace a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na Partitioner místě, ve kterém mohou běžet iterace paralelně a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na OrderablePartitioner<TSource> zařízení, ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci IEnumerable (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně a je možné nakonfigurovat možnosti smyčky.

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

Spustí foreach operaci IEnumerable (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně, možnosti smyčky lze nakonfigurovat a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci OrderablePartitioner<TSource> (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně, možnosti smyčky lze nakonfigurovat a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci Partitioner (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně a je možné nakonfigurovat možnosti smyčky.

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

Provede foreach operaci (For Each v jazyce Visual Basic) s 64bitovými indexy na objektu IEnumerable , ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci Partitioner (For Eachv jazyce Visual Basic), ve které mohou paralelně běžet iterace a stav smyčky lze monitorovat a manipulovat s ní.

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

Provede foreach operaci Partitioner (For Eachv jazyce Visual Basic), ve které mohou paralelně běžet iterace.

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

Spustí foreach operaci (For Each v jazyce Visual Basic) s 64bitovými indexy na objektu IEnumerable , ve kterém mohou paralelně běžet iterace a stav smyčky lze monitorovat a manipulovat s ním.

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

Provede foreach operaci OrderablePartitioner<TSource> (For Eachv jazyce Visual Basic), ve které mohou paralelně běžet iterace a stav smyčky lze monitorovat a manipulovat s ní.

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

Spustí foreach operaci IEnumerable (For Eachv jazyce Visual Basic), ve které mohou paralelně běžet iterace.

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

Provede foreach operaci Partitioner (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně, možnosti smyčky lze nakonfigurovat a stav smyčky lze monitorovat a manipulovat s ní.

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

Spustí foreach operaci IEnumerable (For Eachv jazyce Visual Basic), ve které mohou paralelně běžet iterace a stav smyčky lze monitorovat a manipulovat s ní.

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

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

Provede foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na objektu IEnumerable , ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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ý vrací počáteční stav místních dat pro každý úkol.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem každého úkolu.

Návraty

Struktura obsahující 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 v argumentu parallelOptions je zrušen.

Přidružená CancellationTokenSource k objektu CancellationToken v souboru parallelOptions byla odstraněna.

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

Poznámky

Delegát je body vyvolán jednou pro každý prvek v source výčet. Je k dispozici s následujícími parametry: aktuální prvek, instance, ParallelLoopState která může být použita k předčasnému přerušení smyčky, a nějaký místní stav, který může být sdílen mezi iteracemi, které se provádějí 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. Každé následné vyvolání těla pak vrátí pravděpodobně změněnou 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 je localFinally vyvolán jednou pro každé vlákno, aby provedl poslední akci v místním stavu každého úkolu. Tento delegát může být vyvolán současně na více úlohách; proto musíte synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vláken za dobu životnosti svého provádění, protože se stávající úkoly dokončí a nahradí je novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

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

foreach Provede operaci (For Eachv jazyce Visual Basic) s místními daty vlákna a 64bitovými indexy na objektuIEnumerable, ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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ý vrací počáteční stav místních dat pro každý úkol.

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

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem každého úkolu.

Návraty

Struktura obsahující 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 v argumentu parallelOptions je zrušen.

Přidružená CancellationTokenSource k objektu CancellationToken v souboru parallelOptions byla odstraněna.

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

Poznámky

Delegát je body vyvolán jednou pro každý prvek v source výčet. Je k dispozici s následujícími parametry: aktuální prvek, instance, ParallelLoopState která může být použita k předčasnému přerušení smyčky, index aktuálního prvku (Int64) a nějaký místní stav, který může být sdílen mezi iteracemi, které se provádějí 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. Každé následné vyvolání těla pak vrátí pravděpodobně změněnou 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 je localFinally vyvolán jednou pro každé vlákno, aby provedl poslední akci v místním stavu každého úkolu. Tento delegát může být vyvolán současně na více úlohách; proto musíte synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vláken za dobu životnosti svého provádění, protože se stávající úkoly dokončí a nahradí je novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

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

Provede foreach operaci (For Each v jazyce Visual Basic) s místními daty vlákna na Partitioner zařízení, ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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 elementů v source.

TLocal

Typ místních dat vlákna.

Parametry

source
Partitioner<TSource>

Dělicí nástroj, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

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

localInit
Func<TLocal>

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

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem každého úkolu.

Návraty

Struktura obsahující 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 nástroji sourcePartitioner vrátí false nebo oddíly.null

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

Argument CancellationToken v argumentu parallelOptions je zrušen.

Přidružená CancellationTokenSource k objektu CancellationToken v souboru parallelOptions byla odstraněna.

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být užitečné rozdělení rozsahu. Metoda ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Toto přetížení je k dispozici pro scénáře s malými těly smyčky, kterým může prospět dělení statického rozsahu. Děliče musí podporovat dynamické oddíly. Další informace najdete v tématech 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. Každé následné vyvolání těla pak vrátí pravděpodobně změněnou 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 je localFinally vyvolán jednou pro každou úlohu, aby provedl konečnou akci v místním stavu každého úkolu. Tento delegát může být vyvolán současně na více úlohách; proto musíte synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vláken za dobu životnosti svého provádění, protože se stávající úkoly dokončí a nahradí je novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

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

Provede foreach operaci (For Each v jazyce Visual Basic) s 64bitovými indexy a s místními daty vlákna na objektu OrderablePartitioner<TSource> , ve kterém mohou běžet paralelně iterace , je možné nakonfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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 elementů v source.

TLocal

Typ místních dat vlákna.

Parametry

source
OrderablePartitioner<TSource>

Uspořádaný dělicí nástroj, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

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

localInit
Func<TLocal>

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

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

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem každého úkolu.

Návraty

Struktura obsahující 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 nebo localFinally je null.

Vlastnost SupportsDynamicPartitions v nástroji sourcePartitioner vrátí false nebo oddíly.null

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

Argument CancellationToken v argumentu parallelOptions je zrušen.

Přidružená CancellationTokenSource k objektu CancellationToken v souboru parallelOptions byla odstraněna.

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být užitečné rozdělení rozsahu. Metoda ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech 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. Každé následné vyvolání těla pak vrátí pravděpodobně změněnou 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á je předána delegátovi localFinally . Delegát je localFinally vyvolán jednou pro každou úlohu, aby provedl konečnou akci v místním stavu každého úkolu. Tento delegát může být vyvolán současně na více úlohách; proto musíte synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vláken za dobu životnosti svého provádění, protože se stávající úkoly dokončí a nahradí je novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

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

foreach Spustí operaci (For Each v jazyce Visual Basic) s místními daty vlákna na objektuIEnumerable, ve kterém iterace mohou běžet paralelně a stav smyčky lze monitorovat a manipulovat s ním.

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ý vrací počáteční stav místních dat pro každý úkol.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem 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 je body vyvolán jednou pro každý prvek v source výčet. Je k dispozici s následujícími parametry: aktuální prvek, instance, ParallelLoopState která může být použita k předčasnému přerušení smyčky, a nějaký místní stav, který může být sdílen mezi iteracemi, které se provádějí 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. Každé následné vyvolání těla pak vrátí pravděpodobně změněnou 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 je localFinally vyvolán jednou pro každé vlákno, aby provedl poslední akci v místním stavu každého úkolu. Tento delegát může být vyvolán současně na více úlohách; proto musíte synchronizovat přístup ke všem sdíleným proměnným.

Metoda Parallel.ForEach může používat více úloh než vláken po dobu životnosti provádění, protože se stávající úlohy dokončí a nahradí se novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

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

foreach Spustí operaci (For Each v jazyce Visual Basic) s místními daty vlákna na objektuIEnumerable, ve kterém iterace mohou běžet paralelně a stav smyčky lze monitorovat a zpracovávat.

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ý vrací počáteční stav místních dat pro každý úkol.

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

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem 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é u všech vláken.

Poznámky

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

Delegát localInit je vyvolán 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. Každé následné vyvolání těla pak vrátí pravděpodobně modifikovanou 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á je předána delegátovi localFinally . Delegát localFinally je vyvolán jednou pro každou úlohu, aby se provedla konečná akce v místním stavu každého úkolu. Tento delegát může být vyvolána současně na 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áken po dobu životnosti provádění, protože se stávající úlohy dokončí a nahradí se novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

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

foreach Spustí operaci (For Each v jazyce Visual Basic) s místními daty vlákna na Partitioner , ve kterém iterace mohou běžet paralelně a stav smyčky lze monitorovat a manipulovat s ním.

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>

Dělicí nástroj, který obsahuje původní zdroj dat.

localInit
Func<TLocal>

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

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem 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 nástroji sourcePartitioner vrací false nebo partitioner vrací null oddíly.

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

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být výhodné rozdělení rozsahu. Metoda ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Delegát localInit je vyvolán 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ždou z těchto úloh. Tyto počáteční stavy se předávají prvním body vyvoláním každého úkolu. Každé následné vyvolání těla pak vrátí pravděpodobně modifikovanou 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á je předána delegátovi localFinally . Delegát localFinally je vyvolán jednou pro každou úlohu, aby se provedla konečná akce v místním stavu každého úkolu. Tento delegát může být vyvolána současně na 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áken po dobu životnosti provádění, protože se stávající úlohy dokončí a nahradí se novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

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

foreach Provede operaci (For Each v jazyce Visual Basic) s místními daty vlákna na OrderablePartitioner<TSource> , ve kterém iterace mohou běžet paralelně, možnosti smyčky lze konfigurovat a stav smyčky lze monitorovat a manipulovat s ní.

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>

Uspořádaný dělicí nástroj, který obsahuje původní zdroj dat.

localInit
Func<TLocal>

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

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

Delegát, který je vyvolán jednou za iteraci.

localFinally
Action<TLocal>

Delegát, který provede poslední akci s místním stavem 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 nástroji sourcePartitioner vrací false nebo partitioner vrací null oddíly.

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

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být výhodné rozdělení rozsahu. Metoda ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Delegát localInit je vyvolán 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. Každé následné vyvolání těla pak vrátí pravděpodobně modifikovanou 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á je předána delegátovi localFinally . Delegát localFinally je vyvolán jednou pro každou úlohu, aby se provedla konečná akce v místním stavu každého úkolu. Tento delegát může být vyvolána současně na 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áken po dobu životnosti provádění, protože se stávající úlohy dokončí a nahradí se novými úkoly. To dává podkladovému TaskScheduler objektu možnost přidat, změnit nebo odebrat vlákna, která obsluhují smyčku.

Viz také

Platí pro

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

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

Provede foreach operaci IEnumerable (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně a je možné nakonfigurovat 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ý je vyvolán jednou za iteraci.

Návraty

Struktura obsahující informace o tom, která část smyčky byla dokončena.

Výjimky

Hodnota CancellationToken v argumentu parallelOptions je zrušena.

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 objektu CancellationToken v souboru parallelOptions byla odstraněna.

Poznámky

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

Viz také

Platí pro

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

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

Spustí foreach operaci IEnumerable (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně, možnosti smyčky lze nakonfigurovat a stav smyčky lze monitorovat a manipulovat s ní.

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ý je vyvolán jednou za iteraci.

Návraty

Struktura obsahující informace o tom, která část smyčky byla dokončena.

Výjimky

Argument CancellationToken v argumentu parallelOptions 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 objektu CancellationToken v souboru parallelOptions byla odstraněna.

Poznámky

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

Viz také

Platí pro

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

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

Provede foreach operaci OrderablePartitioner<TSource> (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně, možnosti smyčky lze nakonfigurovat a stav smyčky lze monitorovat a manipulovat s ní.

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 elementů v source.

Parametry

source
OrderablePartitioner<TSource>

Uspořádaný dělicí nástroj, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

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

body
Action<TSource,ParallelLoopState,Int64>

Delegát, který je vyvolán jednou za iteraci.

Návraty

Struktura obsahující informace o tom, která část smyčky byla dokončena.

Výjimky

Argument CancellationToken v argumentu parallelOptions je zrušen.

Argument source je null.

-nebo-

Argument parallelOptions je null.

-nebo-

Argument body je null.

Přidružená CancellationTokenSource k objektu CancellationToken v souboru parallelOptions byla odstraněna.

Vlastnost SupportsDynamicPartitions v uspořádatelném partitioneru source vrátí false.

-nebo-

Vlastnost KeysNormalized v uspořádatelném partitioneru source vrátí false.

-nebo-

Výjimka, která je vyvolán, když některé metody v uspořádatelném partitioneru source vrátí null.

Výjimka, která je vyvolán, aby obsahovala výjimku vyvolanou z jednoho ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být užitečné rozdělení rozsahu. Metoda Parallel.ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Viz také

Platí pro

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

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

Provede foreach operaci Partitioner (For Eachv jazyce Visual Basic), ve které iterace mohou běžet paralelně a je možné nakonfigurovat možnosti smyčky.

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 elementů v source.

Parametry

source
Partitioner<TSource>

Dělicí nástroj, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

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

body
Action<TSource>

Delegát, který je vyvolán jednou za iteraci.

Návraty

Struktura obsahující informace o tom, která část smyčky byla dokončena.

Výjimky

Argument CancellationToken v argumentu parallelOptions je zrušen.

Přidružená CancellationTokenSource k objektu CancellationToken v souboru parallelOptions byla odstraněna.

Argument source je null.

-nebo-

Argument parallelOptions je null.

-nebo-

Argument body je null.

Vlastnost SupportsDynamicPartitions v partitioneru source vrátí false.

-nebo-

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

Výjimka, která je vyvolán, aby obsahovala výjimku vyvolanou z jednoho ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být užitečné rozdělení rozsahu. Metoda Parallel.ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Viz také

Platí pro

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

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

Provede foreach operaci (For Each v jazyce Visual Basic) s 64bitovými indexy na objektu IEnumerable , ve kterém mohou běžet paralelně iterace, konfigurovat možnosti smyčky a stav smyčky lze monitorovat a manipulovat s ní.

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ý je vyvolán jednou za iteraci.

Návraty

Struktura obsahující informace o tom, která část smyčky byla dokončena.

Výjimky

Argument CancellationToken v argumentu parallelOptions 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 objektu CancellationToken v souboru parallelOptions byla odstraněna.

Poznámky

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

Viz také

Platí pro

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

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

foreach Spustí operaci (For Each v jazyce Visual Basic) na Partitioner , ve kterém iterace mohou běžet paralelně a stav smyčky lze monitorovat a manipulovat s ním.

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>

Dělicí nástroj, který obsahuje původní zdroj dat.

body
Action<TSource,ParallelLoopState>

Delegát, který je vyvolán 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 partitioneru source vrátí false.

-nebo-

Metoda v partitioneru source vrátí null.

-nebo-

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

Výjimka, která je vyvolán, aby obsahovala výjimku vyvolanou z jednoho ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být výhodné rozdělení rozsahu. Metoda Parallel.ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Viz také

Platí pro

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

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

foreach Spustí operaci (For Each v jazyce Visual Basic) na Partitioner , ve kterém iterace mohou běžet 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>

Dělicí nástroj, který obsahuje původní zdroj dat.

body
Action<TSource>

Delegát, který je vyvolán 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 dělicím nástroji source vrátí false.

-nebo-

Výjimka, která se vyvolá, když všechny metody v partitioneru source vrátí null.

-nebo-

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

Výjimka, která je vyvolán, aby obsahovala výjimku vyvolanou z jednoho ze zadaných delegátů.

Příklady

Následující příklad ukazuje, jak implementovat dělicí nástroj 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 pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být výhodné rozdělení rozsahu. Metoda Parallel.ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Viz také

Platí pro

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

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

foreach Spustí operaci (For Each v jazyce Visual Basic) s 64bitovými indexy na objektuIEnumerable, ve kterém iterace mohou běžet 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 ^, 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ý je vyvolán 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é u všech vláken.

Poznámky

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

Viz také

Platí pro

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

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

foreach Spustí operaci (For Each v jazyce Visual Basic) na OrderablePartitioner<TSource> , ve kterém iterace mohou běžet paralelně a stav smyčky lze monitorovat a manipulovat s ním.

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>

Uspořádaný dělicí nástroj, který obsahuje původní zdroj dat.

body
Action<TSource,ParallelLoopState,Int64>

Delegát, který je vyvolán 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-

Vlastnost KeysNormalized ve zdrojovém seřazené dělicí rutině vrátí false.

-nebo-

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

Výjimka vyvolaná jedním ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být výhodné rozdělení rozsahu. Metoda Parallel.ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Viz také

Platí pro

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

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

foreach Spustí operaci (For Each v jazyce Visual Basic) na , IEnumerable ve kterém iterace mohou běžet 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ý je vyvolán 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é u všech vláken.

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 znaků, které nejsou prázdné znaky v textovém souboru. V tomto případě se ParallelLoopResult hodnota vrácená metodou ignoruje. Všimněte si, že protože operace mohou běžet paralelně, musíte zajistit, že zvýšení proměnných čítače je atomická operace a že více vláken se nepokusí přistupovat k proměnným čítače současně. Pro tento účel používá lock příklad příkaz (v jazyce C#) a SyncLock příkaz (v jazyce 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 je body vyvolán jednou pro každý prvek v source výčtu. Je k dispozici s aktuálním prvkem jako parametrem.

Viz také

Platí pro

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

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

foreach Spustí operaci (For Each v jazyce Visual Basic) na Partitioner , ve kterém iterace mohou běžet paralelně, možnosti smyčky lze konfigurovat a stav smyčky lze monitorovat a manipulovat s ním.

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>

Dělicí nástroj, který obsahuje původní zdroj dat.

parallelOptions
ParallelOptions

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

body
Action<TSource,ParallelLoopState>

Delegát, který je vyvolán jednou za iteraci.

Návraty

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

Výjimky

Hodnota CancellationToken v argumentu parallelOptions je zrušena.

Přidružená CancellationTokenSource k v CancellationToken souboru parallelOptions byla odstraněna.

Argument source je null.

-nebo-

Argument parallelOptions je null.

-nebo-

Argument body je null.

Vlastnost SupportsDynamicPartitions v dělicím nástroji source vrátí false.

-nebo-

Výjimka, která se vyvolá, když všechny metody v partitioneru source vrátí null.

Výjimka, která je vyvolán, aby obsahovala výjimku vyvolanou z jednoho ze zadaných delegátů.

Poznámky

Toto přetížení je k dispozici pro scénáře, ve kterých chcete přepsat výchozí schéma dělení. Například u malých smyček může být výhodné rozdělení rozsahu. Metoda Parallel.ForEach očekává, že vlastní dělicí nástroje budou podporovat dynamické dělení. Další informace najdete v tématech Vlastní dělicí nástroje pro PLINQ a TPL a Postupy: Implementace dynamických oddílů.

Viz také

Platí pro

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

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

foreach Spustí operaci (For Each v jazyce Visual Basic) na , IEnumerable ve kterém iterace mohou běžet 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 ^> ^ 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ý je vyvolán 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é u všech vláken.

Poznámky

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

Viz také

Platí pro