Partager via


Concepteur d’activités ParallelForEach

L’activité ParallelForEach<T> énumère les éléments d’une collection et, pour chacun d’eux, exécute en parallèle une instruction incorporée, qui se trouve de façon asynchrone sur le même thread. Utilisez cette activité de contrôle de flux au lieu de l'activité Sequence si ses activités enfants sont censées devenir inactives.

L'activité ParallelForEach<T> a une propriété CompletionCondition qui contient une expression Visual Basic spécifiée par l'utilisateur. L’activité ParallelForEach<T> évalue cette propriété après l’exécution de chaque branche. Si elle prend la valeur true, l’activité ParallelForEach<T> se termine sans exécuter les autres branches. Si CompletionCondition ne prend pas la valeur true, l’activité ParallelForEach<T> se termine lorsque toutes ses activités enfants ont été terminées.

Activité ParallelForEach<T>

ParallelForEach<T> énumère ses valeurs et planifie Body pour chaque valeur énumérée. Elle planifie seulement la propriété Body. La manière dont le corps s'exécute dépend de l'inactivation de la propriété Body.

Si la propriété Body ne devient pas inactive, son exécution s'effectue dans l'ordre inverse, car les activités planifiées sont gérées comme une pile, la dernière activité planifiée s'exécutant en premier. Par exemple, si vous disposez d’une collection de {1,2,3,4} dans ParallelForEach<T> et utilisez WriteLine en tant que corps pour écrire la valeur. Vous avez 4, 3, 2, 1 imprimé dans la console. Cela est dû au fait que WriteLine ne devient pas inactif ; par conséquent, une fois planifiées, les 4 activités WriteLine se sont exécutées en adoptant le comportement d'une pile (premier entré-dernier sorti).

Par contre, si des activités dans la propriété Body peuvent devenir inactives, par exemple une activité Receive ou Delay, Il n'est pas nécessaire d'attendre qu'elles soient terminées. ParallelForEach<T> accède à l'activité de corps planifiée suivante et l'exécute. Si cette activité devient inactive à son tour, ParallelForEach<T> passe de nouveau à l'activité de corps suivante.

Utilisation du concepteur d'activités ParallelForEach<T>

Accédez au concepteur d’activités ParallelForEach<T> dans la catégorie Flux de contrôle de la Boîte à outils.

Le concepteur d’activités ParallelForEach<T> peut être déplacé de la Boîte à outils et déposé dans la zone du Concepteur de flux de travail, là où les concepteurs d’activités sont généralement placés, par exemple dans un concepteur d’activités Sequence. Après l’avoir déposé dans le Concepteur de flux de travail, il crée une activité ParallelForEach<T>, qui contient par défaut un DisplayName de ParallelForEach<Int32>.

Propriétés de ParallelForEach<T> dans le Concepteur de flux de travail

Le tableau suivant répertorie les propriétés les plus utiles de l'activité ParallelForEach<T> et décrit comment elles sont utilisées dans le concepteur.

Nom de la propriété Obligatoire Usage
DisplayName False Spécifie le nom d'affichage convivial du concepteur d'activités dans l'en-tête. La valeur par défaut est ParallelForEach<Int32>. La valeur peut être éventuellement modifiée dans la grille Propriétés ou directement dans l'en-tête du concepteur d'activités.
Body False Activité à exécuter pour chaque élément dans la collection. Pour ajouter l'activité Body, déplacez une activité de la boîte à outils vers la zone Corps dans le concepteur d'activités ParallelForEach<T> avec le texte d'indication « Déposer l'activité ici ».
TypeArgument True Type des éléments de la collection Values spécifié par le paramètre générique T. Par défaut, TypeArgument est défini sur Int32. Pour modifier le type T dans le concepteur d’activités ParallelForEach<T>, modifiez la valeur de la zone de liste modifiable TypeArgument dans la grille de propriétés.
Values True Collection d’éléments à itérer. Pour définir Values, tapez une expression Visual Basic dans la zone Valeurs du concepteur d’activités ForEach<T> dans la zone avec le texte d’indicateur « Entrer une expression VB » ou dans la zone Valeurs dans la fenêtre Propriétés.
CompletionCondition Propriété évaluée à l'issue de chaque itération. Si sa valeur est True, les itérations en attente planifiées sont annulées. Si cette propriété n'est pas définie, toutes les instructions planifiées s'exécutent jusqu'à ce qu'elles soient terminées.

Par défaut, l'itérateur de boucle est nommé « item ». Vous pouvez modifier le nom de la variable d'itérateur dans la zone ForEach du concepteur d'activités ParallelForEach<T>. L'itérateur de boucle peut être utilisé dans des expressions dans les enfants de l'activité ParallelForEach<T>.

Voir aussi