Partager via


Parallel.ForEach Méthode

Définition

Exécute une opération foreach (For Each dans Visual Basic) dans laquelle les itérations peuvent s’exécuter en parallèle.

Surcharges

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

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread et des index 64 bits sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur une Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des index 64 bits et des données locales de thread sur une OrderablePartitioner<TSource> dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur une Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur une OrderablePartitioner<TSource> dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle et les options de boucle peuvent être configurées.

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

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur une opération OrderablePartitioner<TSource> dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur un Partitioner dans lequel les itérations peuvent s’exécuter en parallèle et les options de boucle peuvent être configurées.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des index 64 bits sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur un Partitioner dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur une opération Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle.

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

Exécute une opération foreach (For Each dans Visual Basic) avec des index 64 bits sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur un OrderablePartitioner<TSource> dans lequel les itérations peuvent s’exécuter en parallèle et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle.

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

Exécute une opération foreach (For Each dans Visual Basic) sur une opération Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

TLocal

Type des données locales de thread.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

- ou -

L’argument localInit est null.

- ou -

L’argument localFinally est null.

L’argument CancellationTokenparallelOptions est annulé.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel, une ParallelLoopState instance qui peut être utilisée pour décomposer la boucle prématurément, et un état local qui peut être partagé entre les itérations qui s’exécutent sur le même thread.

Le localInit délégué est appelé une fois pour chaque tâche qui participe à l’exécution de la boucle et retourne l’état local initial de chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque tâche retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par thread pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread et des index 64 bits sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

TLocal

Type des données locales de thread.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

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

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

- ou -

L’argument localInit est null.

- ou -

L’argument localFinally est null.

L’argument CancellationTokenparallelOptions est annulé.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel, une ParallelLoopState instance qui peut être utilisée pour décomposer la boucle prématurément, l’index de l’élément actuel (Int64) et un état local qui peut être partagé entre les itérations qui s’exécutent sur le même thread.

Le localInit délégué est appelé une fois pour chaque tâche qui participe à l’exécution de la boucle et retourne l’état local initial de chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque tâche retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par thread pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur une Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

TLocal

Type des données locales de thread.

Paramètres

source
Partitioner<TSource>

Partitionneur qui contient la source de données d’origine.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

- ou -

L’argument localInit est null.

- ou -

L’argument localFinally est null.

La SupportsDynamicPartitions propriété dans les sourcePartitioner retours false ou le partitionneur retourne null des partitions.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

L’argument CancellationTokenparallelOptions est annulé.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Cette surcharge est fournie pour les scénarios avec de petits corps de boucle qui peuvent tirer parti du partitionnement de plage statique. Les partitionneurs doivent prendre en charge les partitions dynamiques. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

Le localInit délégué est appelé une fois pour chaque tâche qui participe à l’exécution de la boucle et retourne l’état local initial de chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque tâche retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par tâche pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des index 64 bits et des données locales de thread sur une OrderablePartitioner<TSource> dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

TLocal

Type des données locales de thread.

Paramètres

source
OrderablePartitioner<TSource>

Partitionneur ordonné qui contient la source de données d’origine.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

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

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

- ou -

L’argument ou localFinally l’argument localInit est null.

La SupportsDynamicPartitions propriété dans les sourcePartitioner retours false ou le partitionneur retourne null des partitions.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

L’argument CancellationTokenparallelOptions est annulé.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

Le localInit délégué est appelé une fois pour chaque tâche qui participe à l’exécution de la boucle et retourne l’état local initial de chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque thread retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par tâche pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

TLocal

Type des données locales de thread.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

- ou -

L’argument localInit est null.

- ou -

L’argument localFinally est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Exemples

L’exemple suivant montre comment utiliser une méthode avec un ForEach état local :

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

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel, une ParallelLoopState instance qui peut être utilisée pour décomposer la boucle prématurément, et un état local qui peut être partagé entre les itérations qui s’exécutent sur le même thread.

Le localInit délégué est appelé une fois pour chaque tâche qui participe à l’exécution de la boucle et retourne l’état local initial de chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque tâche retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par thread pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

TLocal

Type des données locales de thread.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

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

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

- ou -

L’argument localInit est null.

- ou -

L’argument localFinally est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel, une ParallelLoopState instance qui peut être utilisée pour décomposer la boucle prématurément, l’index de l’élément actuel (Int64) et un état local qui peut être partagé entre les itérations qui s’exécutent sur le même thread.

Le localInit délégué est appelé une fois pour chaque tâche qui participe à l’exécution de la boucle et retourne l’état local initial de chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque tâche retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par tâche pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur une Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

TLocal

Type des données locales de thread.

Paramètres

source
Partitioner<TSource>

Partitionneur qui contient la source de données d’origine.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

- ou -

L’argument localInit est null.

- ou -

L’argument localFinally est null.

La SupportsDynamicPartitions propriété dans les sourcePartitioner retours false ou le partitionneur retourne null des partitions.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

Le localInit délégué est appelé une fois pour chaque thread qui participe à l’exécution de la boucle et retourne l’état local initial pour chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque tâche retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par tâche pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des données locales de thread sur une OrderablePartitioner<TSource> dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

TLocal

Type des données locales de thread.

Paramètres

source
OrderablePartitioner<TSource>

Partitionneur ordonné qui contient la source de données d’origine.

localInit
Func<TLocal>

Délégué de fonction qui retourne l’état initial des données locales pour chaque tâche.

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

Délégué appelé une fois par itération.

localFinally
Action<TLocal>

Délégué qui effectue une action finale sur l’état local de chaque tâche.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

- ou -

L’argument localInit est null.

- ou -

L’argument localFinally est null.

La SupportsDynamicPartitions propriété dans les sourcePartitioner retours false ou le partitionneur retourne null des partitions.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

Le localInit délégué est appelé une fois pour chaque tâche qui participe à l’exécution de la boucle et retourne l’état local initial de chacune de ces tâches. Ces états initiaux sont passés aux premiers body appels sur chaque tâche. Ensuite, chaque appel de corps suivant retourne une valeur d’état éventuellement modifiée qui est passée à l’appel de corps suivant. Enfin, le dernier appel de corps sur chaque tâche retourne une valeur d’état transmise au localFinally délégué. Le localFinally délégué est appelé une fois par tâche pour effectuer une action finale sur l’état local de chaque tâche. Ce délégué peut être appelé simultanément sur plusieurs tâches ; par conséquent, vous devez synchroniser l’accès à toutes les variables partagées.

La Parallel.ForEach méthode peut utiliser plus de tâches que de threads pendant la durée de vie de son exécution, car les tâches existantes se terminent et sont remplacées par de nouvelles tâches. Cela donne à l’objet sous-jacent TaskScheduler la possibilité d’ajouter, de modifier ou de supprimer des threads qui serviceent la boucle.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle et les options de boucle peuvent être configurées.

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

Paramètres de type

TSource

Type des données dans la source.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

body
Action<TSource>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument CancellationTokenparallelOptions est annulé

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec l’élément actuel en tant que paramètre.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

body
Action<TSource,ParallelLoopState>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument CancellationTokenparallelOptions est annulé

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel et une ParallelLoopState instance qui peut être utilisée pour rompre la boucle prématurément.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur une opération OrderablePartitioner<TSource> dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

Paramètres

source
OrderablePartitioner<TSource>

Partitionneur ordonné qui contient la source de données d’origine.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

body
Action<TSource,ParallelLoopState,Int64>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument CancellationTokenparallelOptions est annulé

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

La SupportsDynamicPartitions propriété dans le source partitionneur triable retourne false.

- ou -

La KeysNormalized propriété dans le source partitionneur triable retourne false.

- ou -

Exception levée lorsqu’une méthode dans le source partitionneur ordonné retourne null.

Exception levée pour contenir une exception levée à partir de l’un des délégués spécifiés.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La Parallel.ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur un Partitioner dans lequel les itérations peuvent s’exécuter en parallèle et les options de boucle peuvent être configurées.

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

Paramètres de type

TSource

Type des éléments dans source.

Paramètres

source
Partitioner<TSource>

Partitionneur qui contient la source de données d’origine.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

body
Action<TSource>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument CancellationTokenparallelOptions est annulé.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

La SupportsDynamicPartitions propriété dans le source partitionneur retourne false.

- ou -

Exception levée lorsqu’une méthode dans le source partitionneur retourne null.

Exception levée pour contenir une exception levée à partir de l’un des délégués spécifiés.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La Parallel.ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des index 64 bits sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

body
Action<TSource,ParallelLoopState,Int64>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument CancellationTokenparallelOptions est annulé

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel, une ParallelLoopState instance qui peut être utilisée pour décomposer la boucle prématurément et l’index de l’élément actuel (Int64).

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur un Partitioner dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

Paramètres

source
Partitioner<TSource>

Partitionneur qui contient la source de données d’origine.

body
Action<TSource,ParallelLoopState>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

La SupportsDynamicPartitions propriété dans le source partitionneur retourne false.

- ou -

Une méthode dans le source partitionneur retourne null.

- ou -

La GetPartitions(Int32) méthode dans le source partitionneur ne retourne pas le nombre correct de partitions.

Exception levée pour contenir une exception levée à partir de l’un des délégués spécifiés.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La Parallel.ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur une opération Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle.

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

Paramètres de type

TSource

Type des éléments dans source.

Paramètres

source
Partitioner<TSource>

Partitionneur qui contient la source de données d’origine.

body
Action<TSource>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

La SupportsDynamicPartitions propriété dans le source partitionneur retourne false.

- ou -

Exception levée lorsqu’une méthode dans le source partitionneur retourne null.

- ou -

La GetPartitions(Int32) méthode dans le source partitionneur ne retourne pas le nombre correct de partitions.

Exception levée pour contenir une exception levée à partir de l’un des délégués spécifiés.

Exemples

L’exemple suivant montre comment implémenter un partitionneur de plages à utiliser avec 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

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La Parallel.ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) avec des index 64 bits sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

body
Action<TSource,ParallelLoopState,Int64>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel, une ParallelLoopState instance qui peut être utilisée pour décomposer la boucle prématurément et l’index de l’élément actuel (Int64).

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur un OrderablePartitioner<TSource> dans lequel les itérations peuvent s’exécuter en parallèle et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

Paramètres

source
OrderablePartitioner<TSource>

Partitionneur ordonné qui contient la source de données d’origine.

body
Action<TSource,ParallelLoopState,Int64>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

La SupportsDynamicPartitions propriété dans le source partitionneur triable retourne false.

- ou -

La KeysNormalized propriété dans le partitionneur triable source retourne false.

- ou -

Toutes les méthodes du partitionneur triable source retournent null.

Exception levée à partir de l’un des délégués spécifiés.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La Parallel.ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle.

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

Paramètres de type

TSource

Type des données dans la source.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

body
Action<TSource>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Exemples

L’exemple suivant utilise la ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) méthode pour compter le nombre de voyelles et les caractères non blancs dans un fichier texte. Dans ce cas, la ParallelLoopResult valeur retournée par la méthode est ignorée. Notez que, étant donné que les opérations peuvent s’exécuter en parallèle, vous devez vous assurer que l’incrémentation des variables de compteur est une opération atomique et que plusieurs threads n’essaient pas d’accéder simultanément aux variables de compteur. À cet effet, l’exemple utilise l’instruction lock (en C#) et l’instruction SyncLock (dans 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

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec l’élément actuel en tant que paramètre.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur une opération Partitioner dans laquelle les itérations peuvent s’exécuter en parallèle, les options de boucle peuvent être configurées et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des éléments dans source.

Paramètres

source
Partitioner<TSource>

Partitionneur qui contient la source de données d’origine.

parallelOptions
ParallelOptions

Objet qui configure le comportement de cette opération.

body
Action<TSource,ParallelLoopState>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument CancellationTokenparallelOptions est annulé.

Associé CancellationTokenSource à l’élément CancellationToken dans le fichier parallelOptions a été supprimé.

L’argument source est null.

- ou -

L’argument parallelOptions est null.

- ou -

L’argument body est null.

La SupportsDynamicPartitions propriété dans le source partitionneur retourne false.

- ou -

Exception levée lorsqu’une méthode dans le source partitionneur retourne null.

Exception levée pour contenir une exception levée à partir de l’un des délégués spécifiés.

Remarques

Cette surcharge est fournie pour les scénarios où vous souhaitez remplacer le schéma de partitionnement par défaut. Par exemple, les petits corps de boucle peuvent tirer parti du partitionnement de la plage. La Parallel.ForEach méthode s’attend à ce que les partitionneurs personnalisés prennent en charge le partitionnement dynamique. Pour plus d’informations, consultez Partitionneurs personnalisés pour PLINQ et TPL etGuide pratique pour implémenter des partitions dynamiques.

S’applique à

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

Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs
Source:
Parallel.cs

Exécute une opération foreach (For Each dans Visual Basic) sur un IEnumerable dans lequel les itérations peuvent s’exécuter en parallèle, et l’état de la boucle peut être surveillé et manipulé.

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

Paramètres de type

TSource

Type des données dans la source.

Paramètres

source
IEnumerable<TSource>

Source de données énumérable.

body
Action<TSource,ParallelLoopState>

Délégué appelé une fois par itération.

Retours

Structure qui contient des informations sur la partie de la boucle terminée.

Exceptions

L’argument source est null.

- ou -

L’argument body est null.

Exception qui contient toutes les exceptions individuelles levées sur tous les threads.

Remarques

Le body délégué est appelé une fois pour chaque élément dans l’énumérable source . Il est fourni avec les paramètres suivants : l’élément actuel et une ParallelLoopState instance qui peut être utilisée pour rompre la boucle prématurément.

S’applique à