Parallel.ForEach Parallel.ForEach Parallel.ForEach Parallel.ForEach Method

Definition

Führt einen foreach (For Each in Visual Basic)-Vorgang aus, bei dem Iterationen parallel ausgeführt werden können.Executes a foreach (For Each in Visual Basic) operation in which iterations may run in parallel.

Überlädt

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit threadlokalen Daten für einen IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann überwacht und angepasst werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten und 64-Bit-Indizes für einen IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data and 64-bit indexes on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen Partitioner aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on a Partitioner in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit 64-Bit-Indizes und Thread-lokalen Daten für einen OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with 64-bit indexes and with thread-local data on a OrderablePartitioner<TSource> in which iterations may run in parallel , loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen IEnumerable aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen IEnumerable aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable in which iterations may run in parallel and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen Partitioner aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on a Partitioner in which iterations may run in parallel and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on a OrderablePartitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel and loop options can be configured.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem Partitioner aus. Iterationen können parallel ausgeführt werden, Schleifenoptionen sind konfigurierbar.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel and loop options can be configured.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem Partitioner aus. Iterationen können parallel ablaufen, Schleifenoptionen sind konfigurierbar, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen, Schleifenoptionen sind konfigurierbar, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a OrderablePartitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit 64-Bit-Indizes für einen IEnumerable aus. Iterationen können parallel ausgeführt werden. Der Schleifenzustand kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with 64-bit indexes on an IEnumerable in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) für ein Partitioner-Objekt aus, in dem Iterationen parallel ausgeführt werden können.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem Partitioner aus. Iterationen können parallel ablaufen, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a OrderablePartitioner<TSource> in which iterations may run in parallel and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit 64-Bit-Indizes für einen IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with 64-bit indexes on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit threadlokalen Daten für einen IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann überwacht und angepasst werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Das localInit-Argument lautet null.The localInit argument is null.

- oder --or- Das localFinally-Argument lautet null.The localFinally argument is null.

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element ParallelLoopState , eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig zu verlassen, und ein lokaler Zustand, der von Iterationen gemeinsam genutzt werden kann, die im selben Thread ausgeführt werden.It is provided with the following parameters: the current element, a ParallelLoopState instance that may be used to break out of the loop prematurely, and some local state that may be shared amongst iterations that execute on the same thread.

Der localInit Delegat wird einmal für jede Aufgabe aufgerufen, die an der Ausführung der Schleife beteiligt ist, und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each task that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jede Aufgabe einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each task returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Thread aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per thread to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten und 64-Bit-Indizes für einen IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data and 64-bit indexes on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

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

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Das localInit-Argument lautet null.The localInit argument is null.

- oder --or- Das localFinally-Argument lautet null.The localFinally argument is null.

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element ParallelLoopState , eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig abzubrechen, den IndexInt64des aktuellen Elements () und einen lokalen Zustand, der von Iterationen gemeinsam genutzt werden kann, die ausführen. im gleichen Thread.It is provided with the following parameters: the current element, a ParallelLoopState instance that may be used to break out of the loop prematurely, the current element's index (Int64), and some local state that may be shared amongst iterations that execute on the same thread.

Der localInit Delegat wird einmal für jede Aufgabe aufgerufen, die an der Ausführung der Schleife beteiligt ist, und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each task that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jede Aufgabe einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each task returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Thread aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per thread to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen Partitioner aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on a Partitioner in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
Partitioner<TSource> Partitioner<TSource> Partitioner<TSource> Partitioner<TSource>

Der Partitionierer, der die ursprüngliche Datenquelle enthält.The partitioner that contains the original data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Das localInit-Argument lautet null.The localInit argument is null.

- oder --or- Das localFinally-Argument lautet null.The localFinally argument is null.

Die SupportsDynamicPartitions-Eigenschaft im sourcePartitioner gibt false zurück, oder der Partitionierer gibt die null-Partitionen zurück.The SupportsDynamicPartitions property in the sourcePartitioner returns false or the partitioner returns null partitions.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The ForEach method expects custom partitioners to support dynamic partitioning. Diese Überladung wird für Szenarien mit kleinen Schleifen Körpern bereitgestellt, die von der statischen Bereichs Partitionierung profitieren können.This overload is provided for scenarios with small loop bodies that might benefit from static range partitioning. Partitionierer müssen dynamische Partitionen unterstützen.Partitioners must support dynamic partitions. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Der localInit Delegat wird einmal für jede Aufgabe aufgerufen, die an der Ausführung der Schleife beteiligt ist, und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each task that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jede Aufgabe einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each task returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Aufgabe aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per task to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit 64-Bit-Indizes und Thread-lokalen Daten für einen OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with 64-bit indexes and with thread-local data on a OrderablePartitioner<TSource> in which iterations may run in parallel , loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource>

Der sortierbare Partitionierer, der die ursprüngliche Datenquelle enthält.The orderable partitioner that contains the original data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

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

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Der localInit oder das localFinally-Argument ist null.The localInit or localFinally argument is null.

Die SupportsDynamicPartitions-Eigenschaft im sourcePartitioner gibt false zurück, oder der Partitionierer gibt die null-Partitionen zurück.The SupportsDynamicPartitions property in the sourcePartitioner returns false or the partitioner returns null partitions.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Der localInit Delegat wird einmal für jede Aufgabe aufgerufen, die an der Ausführung der Schleife beteiligt ist, und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each task that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jeden Thread einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each thread returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Aufgabe aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per task to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen IEnumerable aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Das localInit-Argument lautet null.The localInit argument is null.

- oder --or- Das localFinally-Argument lautet null.The localFinally argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Beispiele

Im folgenden Beispiel wird gezeigt, wie eine ForEach Methode mit lokalem Zustand verwendet wird:The following example shows how to use a ForEach method with local state:

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

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element ParallelLoopState , eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig zu verlassen, und ein lokaler Zustand, der von Iterationen gemeinsam genutzt werden kann, die im selben Thread ausgeführt werden.It is provided with the following parameters: the current element, a ParallelLoopState instance that may be used to break out of the loop prematurely, and some local state that may be shared amongst iterations that execute on the same thread.

Der localInit Delegat wird einmal für jede Aufgabe aufgerufen, die an der Ausführung der Schleife beteiligt ist, und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each task that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jede Aufgabe einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each task returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Thread aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per thread to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen IEnumerable aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable in which iterations may run in parallel and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

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

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Das localInit-Argument lautet null.The localInit argument is null.

- oder --or- Das localFinally-Argument lautet null.The localFinally argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element ParallelLoopState , eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig abzubrechen, den IndexInt64des aktuellen Elements () und einen lokalen Zustand, der von Iterationen gemeinsam genutzt werden kann, die ausführen. im gleichen Thread.It is provided with the following parameters: the current element, a ParallelLoopState instance that may be used to break out of the loop prematurely, the current element's index (Int64), and some local state that may be shared amongst iterations that execute on the same thread.

Der localInit Delegat wird einmal für jede Aufgabe aufgerufen, die an der Ausführung der Schleife beteiligt ist, und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each task that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jede Aufgabe einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each task returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Aufgabe aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per task to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen Partitioner aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on a Partitioner in which iterations may run in parallel and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
Partitioner<TSource> Partitioner<TSource> Partitioner<TSource> Partitioner<TSource>

Der Partitionierer, der die ursprüngliche Datenquelle enthält.The partitioner that contains the original data source.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Das localInit-Argument lautet null.The localInit argument is null.

- oder --or- Das localFinally-Argument lautet null.The localFinally argument is null.

Die SupportsDynamicPartitions-Eigenschaft im sourcePartitioner gibt false zurück, oder der Partitionierer gibt die null-Partitionen zurück.The SupportsDynamicPartitions property in the sourcePartitioner returns false or the partitioner returns null partitions.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Der localInit Delegat wird für jeden Thread, der an der Ausführung der Schleife teilnimmt, einmal aufgerufen und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each thread that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jede Aufgabe einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each task returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Aufgabe aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per task to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit Thread-lokalen Daten für einen OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with thread-local data on a OrderablePartitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

TLocal

Der Typ der lokalen Thread-Daten.The type of the thread-local data.

Parameter

source
OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource>

Der sortierbare Partitionierer, der die ursprüngliche Datenquelle enthält.The orderable partitioner that contains the original data source.

localInit
Func<TLocal>

Der Funktionsdelegat, der den ursprünglichen Zustand der lokalen Daten für jede Aufgabe zurückgibt.The function delegate that returns the initial state of the local data for each task.

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

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

localFinally
Action<TLocal>

Der Delegat, der die endgültige Aktion beim lokalen Status jeder Aufgabe ausführt.The delegate that performs a final action on the local state of each task.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

- oder --or- Das localInit-Argument lautet null.The localInit argument is null.

- oder --or- Das localFinally-Argument lautet null.The localFinally argument is null.

Die SupportsDynamicPartitions-Eigenschaft im sourcePartitioner gibt false zurück, oder der Partitionierer gibt die null-Partitionen zurück.The SupportsDynamicPartitions property in the sourcePartitioner returns false or the partitioner returns null partitions.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Der localInit Delegat wird einmal für jede Aufgabe aufgerufen, die an der Ausführung der Schleife beteiligt ist, und gibt den anfänglichen lokalen Zustand für jede dieser Aufgaben zurück.The localInit delegate is invoked once for each task that participates in the loop's execution and returns the initial local state for each of those tasks. Diese anfänglichen Zustände werden an die ersten body Aufrufe der einzelnen Aufgaben weitergeleitet.These initial states are passed to the first body invocations on each task. Anschließend gibt jeder nachfolgende Text Aufruf einen möglicherweise geänderten Zustandswert zurück, der an den nächsten Text Aufruf weitergeleitet wird.Then, every subsequent body invocation returns a possibly modified state value that is passed to the next body invocation. Schließlich gibt der letzte Text Aufruf für jede Aufgabe einen Zustandswert zurück, der an den localFinally Delegaten weitergegeben wird.Finally, the last body invocation on each task returns a state value that is passed to the localFinally delegate. Der localFinally Delegat wird einmal pro Aufgabe aufgerufen, um eine abschließende Aktion für den lokalen Zustand jeder Aufgabe auszuführen.The localFinally delegate is invoked once per task to perform a final action on each task's local state. Dieser Delegat kann gleichzeitig für mehrere Aufgaben aufgerufen werden. Daher müssen Sie den Zugriff auf alle freigegebenen Variablen synchronisieren.This delegate might be invoked concurrently on multiple tasks; therefore, you must synchronize access to any shared variables.

Die Parallel.ForEach -Methode verwendet möglicherweise mehr Tasks als Threads im Laufe der Lebensdauer ihrer Ausführung, da vorhandene Aufgaben vollständig ausgeführt werden und durch neue Aufgaben ersetzt werden.The Parallel.ForEach method may use more tasks than threads over the lifetime of its execution, as existing tasks complete and are replaced by new tasks. Dadurch erhält das zugrunde TaskScheduler liegende Objekt die Möglichkeit, Threads hinzuzufügen, zu ändern oder zu entfernen, die die Schleife bedienen.This gives the underlying TaskScheduler object the chance to add, change, or remove threads that service the loop.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel and loop options can be configured.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

body
Action<TSource>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit dem aktuellen Element als Parameter bereitgestellt.It is provided with the current element as a parameter.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

body
Action<TSource,ParallelLoopState>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element und ParallelLoopState eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig abzubrechen.It is provided with the following parameters: the current element, and a ParallelLoopState instance that may be used to break out of the loop prematurely.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

body
Action<TSource,ParallelLoopState>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element und ParallelLoopState eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig abzubrechen.It is provided with the following parameters: the current element, and a ParallelLoopState instance that may be used to break out of the loop prematurely.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem Partitioner aus. Iterationen können parallel ausgeführt werden, Schleifenoptionen sind konfigurierbar.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel and loop options can be configured.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

Parameter

source
Partitioner<TSource> Partitioner<TSource> Partitioner<TSource> Partitioner<TSource>

Der Partitionierer, der die ursprüngliche Datenquelle enthält.The partitioner that contains the original data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

body
Action<TSource>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die SupportsDynamicPartitions-Eigenschaft im source-Partitioner gibt false zurück.The SupportsDynamicPartitions property in the source partitioner returns false.

- oder --or- Die Ausnahme, die ausgelöst wird, wenn irgendeine Methode im source-Partitionierer null zurückgibt.The exception that is thrown when any methods in the source partitioner return null.

Die Ausnahme, die ausgelöst wird, um eine Ausnahme zu enthalten, die von einem der angegebenen Delegaten ausgelöst wurde.The exception that is thrown to contain an exception thrown from one of the specified delegates.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die Parallel.ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The Parallel.ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem Partitioner aus. Iterationen können parallel ablaufen, Schleifenoptionen sind konfigurierbar, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

Parameter

source
Partitioner<TSource> Partitioner<TSource> Partitioner<TSource> Partitioner<TSource>

Der Partitionierer, der die ursprüngliche Datenquelle enthält.The partitioner that contains the original data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

body
Action<TSource,ParallelLoopState>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen über den Abschnitt der Schleife enthält, der abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die SupportsDynamicPartitions-Eigenschaft im source-Partitioner gibt false zurück.The SupportsDynamicPartitions property in the source partitioner returns false.

- oder --or- Die Ausnahme, die ausgelöst wird, wenn irgendeine Methode im source-Partitionierer null zurückgibt.The exception that is thrown when any methods in the source partitioner return null.

Die Ausnahme, die ausgelöst wird, um eine Ausnahme zu enthalten, die von einem der angegebenen Delegaten ausgelöst wurde.The exception that is thrown to contain an exception thrown from one of the specified delegates.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die Parallel.ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The Parallel.ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen, Schleifenoptionen sind konfigurierbar, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a OrderablePartitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

Parameter

source
OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource>

Der sortierbare Partitionierer, der die ursprüngliche Datenquelle enthält.The orderable partitioner that contains the original data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

body
Action<TSource,ParallelLoopState,Int64>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Die SupportsDynamicPartitions-Eigenschaft im source sortierbaren Partitionierer gibt false zurück.The SupportsDynamicPartitions property in the source orderable partitioner returns false.

- oder --or- Die KeysNormalized-Eigenschaft im source sortierbaren Partitionierer gibt false zurück.The KeysNormalized property in the source orderable partitioner returns false.

- oder --or- Die Ausnahme, die ausgelöst wird, wenn irgendwelche Methoden im source sortierbaren Partitionierer null zurückgeben.The exception that is thrown when any methods in the source orderable partitioner return null.

Die Ausnahme, die ausgelöst wird, um eine Ausnahme zu enthalten, die von einem der angegebenen Delegaten ausgelöst wurde.The exception that is thrown to contain an exception thrown from one of the specified delegates.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die Parallel.ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The Parallel.ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem IEnumerable aus. Iterationen können parallel ablaufen.Executes a foreach (For Each in Visual Basic) operation on an IEnumerable in which iterations may run in parallel.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

body
Action<TSource>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Beispiele

Im folgenden Beispiel wird die ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) -Methode verwendet, um die Anzahl der Vokale und der Zeichen, die keine Leerzeichen sind, in einer Textdatei zu zählen.The following example uses the ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) method to count the number of vowels and non-white-space characters in a text file. In diesem Fall wird der ParallelLoopResult Wert, der von der-Methode zurückgegeben wird, ignoriert.In this case, the ParallelLoopResult value returned by the method is ignored. Da Vorgänge parallel ausgeführt werden können, müssen Sie sicherstellen, dass das Inkrementieren der gegen Variablen eine atomarische Operation ist, und dass mehrere Threads nicht versuchen, gleichzeitig auf die Counter-Variablen zuzugreifen.Note that, because operations can run in parallel, you must ensure that incrementing the counter variables is an atomic operation, and that multiple threads do not attempt to access the counter variables simultaneously. Zu diesem Zweck verwendet das Beispiel die lock -Anweisung (in C#) und die SyncLock -Anweisung (in Visual Basic).For this purpose, the example uses the lock statement (in C#) and the SyncLock statement (in 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

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit dem aktuellen Element als Parameter bereitgestellt.It is provided with the current element as a parameter.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit 64-Bit-Indizes für einen IEnumerable aus. Iterationen können parallel ausgeführt werden. Der Schleifenzustand kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with 64-bit indexes on an IEnumerable in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

body
Action<TSource,ParallelLoopState,Int64>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element ParallelLoopState , eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig zu verlassen, und der IndexInt64des aktuellen Elements ().It is provided with the following parameters: the current element, a ParallelLoopState instance that may be used to break out of the loop prematurely, and the current element's index (Int64).

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) für ein Partitioner-Objekt aus, in dem Iterationen parallel ausgeführt werden können.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

Parameter

source
Partitioner<TSource> Partitioner<TSource> Partitioner<TSource> Partitioner<TSource>

Der Partitionierer, der die ursprüngliche Datenquelle enthält.The partitioner that contains the original data source.

body
Action<TSource>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die SupportsDynamicPartitions-Eigenschaft im source-Partitioner gibt false zurück.The SupportsDynamicPartitions property in the source partitioner returns false.

- oder --or- Die Ausnahme, die ausgelöst wird, wenn irgendeine Methode im source-Partitionierer null zurückgibt.The exception that is thrown when any methods in the source partitioner return null.

- oder --or- Die GetPartitions(Int32)-Methode im source-Partitioner gibt nicht die korrekte Anzahl von Partitionen zurück.The GetPartitions(Int32) method in the source partitioner does not return the correct number of partitions.

Die Ausnahme, die ausgelöst wird, um eine Ausnahme zu enthalten, die von einem der angegebenen Delegaten ausgelöst wurde.The exception that is thrown to contain an exception thrown from one of the specified delegates.

Beispiele

Im folgenden Beispiel wird gezeigt, wie ein Bereichs Partitionierer für die Verwendung Parallel.ForEachmit implementiert wird:The following example shows how to implement a range partitioner for use with 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

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die Parallel.ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The Parallel.ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem Partitioner aus. Iterationen können parallel ablaufen, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a Partitioner in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

Parameter

source
Partitioner<TSource> Partitioner<TSource> Partitioner<TSource> Partitioner<TSource>

Der Partitionierer, der die ursprüngliche Datenquelle enthält.The partitioner that contains the original data source.

body
Action<TSource,ParallelLoopState>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die SupportsDynamicPartitions-Eigenschaft im source-Partitioner gibt false zurück.The SupportsDynamicPartitions property in the source partitioner returns false.

- oder --or- Eine Methode im source-Partitioner gibt null zurück.A method in the source partitioner returns null.

- oder --or- Die GetPartitions(Int32)-Methode im source-Partitioner gibt nicht die korrekte Anzahl von Partitionen zurück.The GetPartitions(Int32) method in the source partitioner does not return the correct number of partitions.

Die Ausnahme, die ausgelöst wird, um eine Ausnahme zu enthalten, die von einem der angegebenen Delegaten ausgelöst wurde.The exception that is thrown to contain an exception thrown from one of the specified delegates.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die Parallel.ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The Parallel.ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit einem OrderablePartitioner<TSource> aus. Iterationen können parallel ablaufen, und der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation on a OrderablePartitioner<TSource> in which iterations may run in parallel and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Typ der Elemente in source.The type of the elements in source.

Parameter

source
OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource> OrderablePartitioner<TSource>

Der sortierbare Partitionierer, der die ursprüngliche Datenquelle enthält.The orderable partitioner that contains the original data source.

body
Action<TSource,ParallelLoopState,Int64>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Das source-Argument lautet null.The source argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die SupportsDynamicPartitions-Eigenschaft im source sortierbaren Partitionierer gibt false zurück.The SupportsDynamicPartitions property in the source orderable partitioner returns false.

- oder --or- Die KeysNormalized-Eigenschaft im nach Quelle sortierbaren Partitionierer gibt false zurück.The KeysNormalized property in the source orderable partitioner returns false.

- oder --or- Sämtliche Methoden im sortierbaren Quellpartitionierer geben null zurück.Any methods in the source orderable partitioner return null.

Die Ausnahme, die von einem der angegebenen Delegaten ausgelöst wurde.The exception thrown from one of the specified delegates.

Hinweise

Diese Überladung wird für Szenarien bereitgestellt, in denen Sie das Standard Partitionierungsschema außer Kraft setzen möchten.This overload is provided for scenarios where you want to override the default partitioning scheme. Kleine Schleifen Texte können z. b. von der Partitionierung des Bereichs profitieren.For example, small loop bodies might benefit from partitioning the range. Die Parallel.ForEach -Methode erwartet, dass benutzerdefinierte Partitionierer dynamische Partitionierung unterstützen.The Parallel.ForEach method expects custom partitioners to support dynamic partitioning. Weitere Informationen finden Sie unter benutzerdefinierte Partitionierer für PLINQ und TPL und Gewusst wie: Implementieren von dynamischen Partitionen.For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.

Siehe auch

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

Führt einen foreach-Vorgang (For Each in Visual Basic) mit 64-Bit-Indizes für einen IEnumerable aus. Iterationen können parallel ablaufen. Schleifenoptionen sind konfigurierbar. Der Schleifenstatus kann beobachtet und manipuliert werden.Executes a foreach (For Each in Visual Basic) operation with 64-bit indexes on an IEnumerable in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.

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

Typparameter

TSource

Der Datentyp in der Quelle.The type of the data in the source.

Parameter

source
IEnumerable<TSource>

Eine auflistbare Datenquelle.An enumerable data source.

parallelOptions
ParallelOptions ParallelOptions ParallelOptions ParallelOptions

Ein Objekt, das das Verhalten dieses Vorgangs konfiguriert.An object that configures the behavior of this operation.

body
Action<TSource,ParallelLoopState,Int64>

Der Delegat, der einmal pro Iteration aufgerufen wird.The delegate that is invoked once per iteration.

Gibt zurück

Eine Struktur, die Informationen darüber enthält, welcher Abschnitt der Schleife abgeschlossen ist.A structure that contains information about which portion of the loop completed.

Ausnahmen

Die CancellationToken im parallelOptions-Argument wird abgebrochen.The CancellationToken in the parallelOptions argument is canceled

Das source-Argument lautet null.The source argument is null.

- oder --or- Das parallelOptions-Argument lautet null.The parallelOptions argument is null.

- oder --or- Das body-Argument lautet null.The body argument is null.

Die Ausnahme, die alle einzelnen, auf allen Threads ausgelösten Ausnahmen enthält.The exception that contains all the individual exceptions thrown on all threads.

Die CancellationTokenSource, die der CancellationToken im parallelOptions zugeordnet ist, ist gelöscht worden.The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed.

Hinweise

Der body Delegat wird einmal für jedes Element in der source Enumerable aufgerufen.The body delegate is invoked once for each element in the source enumerable. Sie wird mit den folgenden Parametern bereitgestellt: das aktuelle Element ParallelLoopState , eine-Instanz, die verwendet werden kann, um die Schleife vorzeitig zu verlassen, und der IndexInt64des aktuellen Elements ().It is provided with the following parameters: the current element, a ParallelLoopState instance that may be used to break out of the loop prematurely, and the current element's index (Int64).

Siehe auch

Gilt für: