Parallel.ForEach Methode

Definitie

Hiermee wordt een bewerking foreach (For Each uitgevoerd in Visual Basic) waarin iteraties parallel kunnen worden uitgevoerd.

Overloads

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Hiermee wordt een bewerking foreach (For Each uitgevoerd in Visual Basic) met thread-lokale gegevens en 64-bits indexen op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en kan de status van de lus worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd, lusopties kunnen worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met 64-bits indexen en met thread-lokale gegevens op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd, lusopties kunnen worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en lusopties kunnen worden geconfigureerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, lusopties kunnen worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd en lusopties kunnen worden geconfigureerd.

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

Hiermee voert u een bewerking foreach (For Each in Visual Basic) uit op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en kan de status van de lus worden bewaakt en gemanipuleerd.

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

Hiermee voert u een bewerking foreach (For Each in Visual Basic) uit op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en kan de status van de lus worden bewaakt en gemanipuleerd.

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

Hiermee wordt een bewerking foreach (For Each in Visual Basic) uitgevoerd op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd.

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

Hiermee wordt een bewerking foreach (For Each uitgevoerd in Visual Basic) met 64-bits indexen op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en kan de status van de lus worden bewaakt en gemanipuleerd.

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

Hiermee wordt een bewerking foreach (For Each in Visual Basic) uitgevoerd op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd.

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

Hiermee wordt een bewerking foreach (For Each uitgevoerd in Visual Basic) op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd en kan de status van de lus worden bewaakt en gemanipuleerd.

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

Hiermee wordt een bewerking foreach (For Each in Visual Basic) uitgevoerd op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met 64-bits indexen op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en de status van de lus kan worden bewaakt en bewerkt.

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Type parameters

TSource

Het type gegevens in de bron.

TLocal

Het type thread-lokale gegevens.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument is null.

– of –

Het localFinally argument is null.

Het CancellationToken argument wordt parallelOptions geannuleerd.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element, een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken en een lokale status die kan worden gedeeld tussen iteraties die worden uitgevoerd op dezelfde thread.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke taak die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke taak een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per thread aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Hiermee wordt een bewerking foreach (For Each uitgevoerd in Visual Basic) met thread-lokale gegevens en 64-bits indexen op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en kan de status van de lus worden bewaakt en gemanipuleerd.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Type parameters

TSource

Het type gegevens in de bron.

TLocal

Het type thread-lokale gegevens.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

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

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument is null.

– of –

Het localFinally argument is null.

Het CancellationToken argument wordt parallelOptions geannuleerd.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element, een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken, de index van het huidige element (Int64) en een lokale status die kan worden gedeeld tussen iteraties die op dezelfde thread worden uitgevoerd.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke taak die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke taak een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per thread aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd, lusopties kunnen worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Type parameters

TSource

Het type elementen in source.

TLocal

Het type thread-lokale gegevens.

Parameters

source
Partitioner<TSource>

De partitioner die de oorspronkelijke gegevensbron bevat.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument is null.

– of –

Het localFinally argument is null.

De SupportsDynamicPartitions eigenschap in de sourcePartitioner returns false of de partitioner retourneert null partities.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Het CancellationToken argument wordt parallelOptions geannuleerd.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Deze overbelasting wordt geboden voor scenario's met kleine lusteksten die kunnen profiteren van statische bereikpartitionering. Partitioners moeten dynamische partities ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke taak die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke taak een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per taak aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit met 64-bits indexen en met thread-lokale gegevens op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Type parameters

TSource

Het type elementen in source.

TLocal

Het type thread-lokale gegevens.

Parameters

source
OrderablePartitioner<TSource>

De orderable partitioner die de oorspronkelijke gegevensbron bevat.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

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

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument of localFinally het argument is null.

De SupportsDynamicPartitions eigenschap in de sourcePartitioner returns false of de partitioner retourneert null partities.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Het CancellationToken argument wordt parallelOptions geannuleerd.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke taak die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke thread een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per taak aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type gegevens in de bron.

TLocal

Het type thread-lokale gegevens.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument is null.

– of –

Het localFinally argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een methode gebruikt met een ForEach lokale status:

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

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element, een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken en een lokale status die kan worden gedeeld tussen iteraties die worden uitgevoerd op dezelfde thread.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke taak die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke taak een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per thread aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type gegevens in de bron.

TLocal

Het type thread-lokale gegevens.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

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

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument is null.

– of –

Het localFinally argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element, een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken, de index van het huidige element (Int64) en een lokale status die kan worden gedeeld tussen iteraties die op dezelfde thread worden uitgevoerd.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke taak die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke taak een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per taak aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type elementen in source.

TLocal

Het type thread-lokale gegevens.

Parameters

source
Partitioner<TSource>

De partitioner die de oorspronkelijke gegevensbron bevat.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument is null.

– of –

Het localFinally argument is null.

De SupportsDynamicPartitions eigenschap in de sourcePartitioner returns false of de partitioner retourneert null partities.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke thread die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke taak een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per taak aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit met thread-lokale gegevens op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd, lusopties kunnen worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type elementen in source.

TLocal

Het type thread-lokale gegevens.

Parameters

source
OrderablePartitioner<TSource>

De orderable partitioner die de oorspronkelijke gegevensbron bevat.

localInit
Func<TLocal>

De gedelegeerde van de functie die de initiële status van de lokale gegevens voor elke taak retourneert.

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

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

localFinally
Action<TLocal>

De gedelegeerde die een laatste actie uitvoert op de lokale status van elke taak.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

– of –

Het localInit argument is null.

– of –

Het localFinally argument is null.

De SupportsDynamicPartitions eigenschap in de sourcePartitioner returns false of de partitioner retourneert null partities.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

De localInit gemachtigde wordt eenmaal aangeroepen voor elke taak die deelneemt aan de uitvoering van de lus en retourneert de initiële lokale status voor elk van deze taken. Deze initiële statussen worden doorgegeven aan de eerste body aanroepen voor elke taak. Vervolgens retourneert elke volgende aanroep een mogelijk gewijzigde statuswaarde die wordt doorgegeven aan de volgende aanroep van de hoofdtekst. Ten slotte retourneert de laatste aanroep van de hoofdtekst voor elke taak een statuswaarde die wordt doorgegeven aan de localFinally gemachtigde. De localFinally gemachtigde wordt eenmaal per taak aangeroepen om een laatste actie uit te voeren op de lokale status van elke taak. Deze gemachtigde kan gelijktijdig worden aangeroepen voor meerdere taken; Daarom moet u de toegang tot gedeelde variabelen synchroniseren.

De Parallel.ForEach methode kan meer taken gebruiken dan threads gedurende de levensduur van de uitvoering, omdat bestaande taken zijn voltooid en worden vervangen door nieuwe taken. Dit geeft het onderliggende TaskScheduler object de kans om threads toe te voegen, te wijzigen of te verwijderen die de lus gebruiken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en lusopties kunnen worden geconfigureerd.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult

Type parameters

TSource

Het type gegevens in de bron.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

body
Action<TSource>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het CancellationToken argument wordt parallelOptions geannuleerd

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met het huidige element als parameter.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, lusopties kunnen worden geconfigureerd en de status van de lus kan worden bewaakt en gemanipuleerd.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Type parameters

TSource

Het type gegevens in de bron.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

body
Action<TSource,ParallelLoopState>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het CancellationToken argument wordt parallelOptions geannuleerd

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element en een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type gegevens in de bron.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

body
Action<TSource,ParallelLoopState>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element en een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd en lusopties kunnen worden geconfigureerd.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult

Type parameters

TSource

Het type elementen in source.

Parameters

source
Partitioner<TSource>

De partitioner die de oorspronkelijke gegevensbron bevat.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

body
Action<TSource>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het CancellationToken argument wordt parallelOptions geannuleerd.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

De SupportsDynamicPartitions eigenschap in de source partitioner retourneert false.

– of –

De uitzondering die wordt gegenereerd wanneer methoden in de source partitioner worden geretourneerd null.

De uitzondering die wordt gegenereerd om een uitzondering te bevatten die is gegenereerd door een van de opgegeven gemachtigden.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De Parallel.ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

Zie ook

Van toepassing op

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

Hiermee voert u een bewerking foreach (For Each in Visual Basic) uit op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en kan de status van de lus worden bewaakt en gemanipuleerd.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Type parameters

TSource

Het type elementen in source.

Parameters

source
Partitioner<TSource>

De partitioner die de oorspronkelijke gegevensbron bevat.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

body
Action<TSource,ParallelLoopState>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het CancellationToken argument wordt parallelOptions geannuleerd.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

De SupportsDynamicPartitions eigenschap in de source partitioner retourneert false.

– of –

De uitzondering die wordt gegenereerd wanneer methoden in de source partitioner worden geretourneerd null.

De uitzondering die wordt gegenereerd om een uitzondering te bevatten die is gegenereerd door een van de opgegeven gemachtigden.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De Parallel.ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

Zie ook

Van toepassing op

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

Hiermee voert u een bewerking foreach (For Each in Visual Basic) uit op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en kan de status van de lus worden bewaakt en gemanipuleerd.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Type parameters

TSource

Het type elementen in source.

Parameters

source
OrderablePartitioner<TSource>

De orderable partitioner die de oorspronkelijke gegevensbron bevat.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

body
Action<TSource,ParallelLoopState,Int64>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het CancellationToken argument wordt parallelOptions geannuleerd

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

De SupportsDynamicPartitions eigenschap in de source beschikbare partitioner retourneert false.

– of –

De KeysNormalized eigenschap in de source beschikbare partitioner retourneert false.

– of –

De uitzondering die wordt gegenereerd wanneer methoden in de source orderbare partitioner worden geretourneerd null.

De uitzondering die wordt gegenereerd om een uitzondering te bevatten die is gegenereerd door een van de opgegeven gemachtigden.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De Parallel.ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

Zie ook

Van toepassing op

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

Hiermee wordt een bewerking foreach (For Each in Visual Basic) uitgevoerd op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd.

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

Type parameters

TSource

Het type gegevens in de bron.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

body
Action<TSource>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Voorbeelden

In het volgende voorbeeld wordt de ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) methode gebruikt om het aantal klinkers en niet-witruimtetekens in een tekstbestand te tellen. In dit geval wordt de ParallelLoopResult waarde die door de methode wordt geretourneerd, genegeerd. Omdat bewerkingen parallel kunnen worden uitgevoerd, moet u ervoor zorgen dat het verhogen van de tellervariabelen een atomische bewerking is en dat meerdere threads niet tegelijkertijd toegang proberen te krijgen tot de tellervariabelen. Hiervoor gebruikt het voorbeeld de instructie lock (in C#) en de instructie SyncLock (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

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met het huidige element als parameter.

Zie ook

Van toepassing op

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

Hiermee wordt een bewerking foreach (For Each uitgevoerd in Visual Basic) met 64-bits indexen op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd en kan de status van de lus worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type gegevens in de bron.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

body
Action<TSource,ParallelLoopState,Int64>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element, een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken en de index van het huidige element (Int64).

Zie ook

Van toepassing op

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

Hiermee wordt een bewerking foreach (For Each in Visual Basic) uitgevoerd op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd.

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

Type parameters

TSource

Het type elementen in source.

Parameters

source
Partitioner<TSource>

De partitioner die de oorspronkelijke gegevensbron bevat.

body
Action<TSource>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

De SupportsDynamicPartitions eigenschap in de source partitioner retourneert false.

– of –

De uitzondering die wordt gegenereerd wanneer methoden in de source partitioner worden geretourneerd null.

– of –

De GetPartitions(Int32) methode in de source partitioner retourneert niet het juiste aantal partities.

De uitzondering die wordt gegenereerd om een uitzondering te bevatten die is gegenereerd door een van de opgegeven gemachtigden.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een bereikpartitioner implementeert voor gebruik met 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

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De Parallel.ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

Zie ook

Van toepassing op

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

Hiermee wordt een bewerking foreach (For Each uitgevoerd in Visual Basic) op een Partitioner waarin iteraties parallel kunnen worden uitgevoerd en kan de status van de lus worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type elementen in source.

Parameters

source
Partitioner<TSource>

De partitioner die de oorspronkelijke gegevensbron bevat.

body
Action<TSource,ParallelLoopState>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

De SupportsDynamicPartitions eigenschap in de source partitioner retourneert false.

– of –

Een methode in de source partitioner retourneert null.

– of –

De GetPartitions(Int32) methode in de source partitioner retourneert niet het juiste aantal partities.

De uitzondering die wordt gegenereerd om een uitzondering te bevatten die is gegenereerd door een van de opgegeven gemachtigden.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De Parallel.ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

Zie ook

Van toepassing op

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

Hiermee wordt een bewerking foreach (For Each in Visual Basic) uitgevoerd op een OrderablePartitioner<TSource> waarin iteraties parallel kunnen worden uitgevoerd en de status van de lus kan worden bewaakt en gemanipuleerd.

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

Type parameters

TSource

Het type elementen in source.

Parameters

source
OrderablePartitioner<TSource>

De orderable partitioner die de oorspronkelijke gegevensbron bevat.

body
Action<TSource,ParallelLoopState,Int64>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het source argument is null.

– of –

Het body argument is null.

De SupportsDynamicPartitions eigenschap in de source beschikbare partitioner retourneert false.

– of –

De KeysNormalized eigenschap in de bronvolgordepartitie retourneert false.

– of –

Alle methoden in de bronvolgordepartitioner retourneren null.

De uitzondering die is opgetreden bij een van de opgegeven gemachtigden.

Opmerkingen

Deze overbelasting wordt geboden voor scenario's waarin u het standaardpartitioneringsschema wilt overschrijven. Kleine lusteksten kunnen bijvoorbeeld baat hebben bij het partitioneren van het bereik. De Parallel.ForEach methode verwacht dat aangepaste partitioners dynamische partitionering ondersteunen. Zie Aangepaste partities voor PLINQ en TPL enHow to: Implement Dynamic Partitions voor meer informatie.

Zie ook

Van toepassing op

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

Voert een bewerking foreach (For Each in Visual Basic) uit met 64-bits indexen op een IEnumerable waarin iteraties parallel kunnen worden uitgevoerd, kunnen lusopties worden geconfigureerd en de status van de lus kan worden bewaakt en bewerkt.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Type parameters

TSource

Het type gegevens in de bron.

Parameters

source
IEnumerable<TSource>

Een opsommingsbare gegevensbron.

parallelOptions
ParallelOptions

Een object dat het gedrag van deze bewerking configureert.

body
Action<TSource,ParallelLoopState,Int64>

De gemachtigde die eenmaal per iteratie wordt aangeroepen.

Retouren

Een structuur die informatie bevat over welk gedeelte van de lus is voltooid.

Uitzonderingen

Het CancellationToken argument wordt parallelOptions geannuleerd

Het source argument is null.

– of –

Het parallelOptions argument is null.

– of –

Het body argument is null.

De uitzondering die alle afzonderlijke uitzonderingen bevat die zijn gegenereerd op alle threads.

De CancellationTokenSource gekoppelde aan de CancellationToken in de parallelOptions is verwijderd.

Opmerkingen

De body gemachtigde wordt eenmaal aangeroepen voor elk element in de source opsomming. Het wordt geleverd met de volgende parameters: het huidige element, een ParallelLoopState exemplaar dat kan worden gebruikt om voortijdig uit de lus te breken en de index van het huidige element (Int64).

Zie ook

Van toepassing op