Parallel.ForEach Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Spustí operaci |
| ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Spustí operaci |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Spustí operaci |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Spustí operaci |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Spustí operaci |
| ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Spustí operaci |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Spustí operaci |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) |
Spustí operaci |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Spustí operaci |
| ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Spustí operaci |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) |
Spustí operaci |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Spustí operaci |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>) |
Spustí operaci |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource>) |
Spustí operaci |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Spustí operaci |
| ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Spustí operaci |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) |
Spustí operaci |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Spustí operaci |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>) |
Spustí operaci |
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
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
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
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
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
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
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
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
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
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
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.