Parallel.ForEach Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Hiermee wordt een bewerking |
| ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Voert een bewerking |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Voert een bewerking |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Voert een bewerking |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Voert een bewerking |
| ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Voert een bewerking |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Voert een bewerking |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) |
Voert een bewerking |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Voert een bewerking |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>) |
Voert een bewerking |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) |
Voert een bewerking |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Hiermee voert u een bewerking |
| ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Hiermee voert u een bewerking |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) |
Hiermee wordt een bewerking |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Hiermee wordt een bewerking |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource>) |
Hiermee wordt een bewerking |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>) |
Hiermee wordt een bewerking |
| ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Hiermee wordt een bewerking |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Voert een bewerking |
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
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
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
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
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
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
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
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
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
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
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).