Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die ParallelForEach-Aktivität listet die Elemente einer Auflistung auf und führt gleichzeitig, asynchron im gleichen Thread, eine eingebettete Anweisung für jedes Element der Auflistung aus. Verwenden Sie diese Flusssteuerungsaktivität statt der Sequence-Aktivität, wenn von den untergeordneten Aktivitäten dieser Aktivität erwartet werden kann, dass sie in den Leerlauf übergehen.
Die ParallelForEach-Aktivität verfügt über die CompletionCondition-Eigenschaft, die einen benutzerdefinierten Visual Basic-Ausdruck enthält. Die ParallelForEach-Aktivität wertet diese Eigenschaft aus, nachdem alle Verzweigungen abgeschlossen sind. Wenn die Eigenschaft true ergibt, dann wird die ParallelForEach-Aktivität abgeschlossen, ohne die anderen Verzweigungen auszuführen. Wenn CompletionCondition nicht den Wert true ergibt, dann wird die ParallelForEach-Aktivität abgeschlossen, sobald alle seine untergeordneten Aktivitäten abgeschlossen sind.
Die ParallelForEach<T>-Aktivität
ParallelForEach listet seine Werte auf und plant die Body-Ausführung für jeden aufgelisteten Wert. Es wird nur der Body geplant. Wie der Textkörper ausgeführt wird, hängt davon ab, ob der Body in den Leerlauf übergeht.
Geht der Body nicht in den Leerlauf über, erfolgt die Ausführung in umgekehrter Reihenfolge, da die geplanten Aktivitäten als Stapel behandelt werden, also die letzte geplante Aktivität als erste ausgeführt wird. Angenommen, eine Auflistung enthält {1,2,3,4} in ParallelForEach und verwendet WriteLine als Textkörper, um den jeweiligen Wert auszugeben. Dann werden die Werte 4, 3, 2, 1 auf der Konsole ausgegeben. Dies deshalb, weil WriteLine nicht in den Leerlauf übergeht, weshalb 4 WriteLine-Aktivitäten geplant wurden, die dem Stapelverhalten entsprechend (die zuletzt geplante Aktivität wird als erste ausgeführt) ausgeführt werden.
Wenn aber Aktivitäten im Body in den Leerlauf übergehen können, etwa eine Receive-Aktivität oder eine Delay-Aktivität, ergibt sich Folgendes. Dann gibt es keine Notwendigkeit, mit der Ausführung zu warten. ParallelForEach versucht dann, die nächste geplante Aktivität auszuführen. Wenn auch diese in den Leerlauf übergeht, bewegt sich ParallelForEach zum Textkörper der nächsten Aktivität.
Verwenden des ParallelForEach<T>-Aktivitätsdesigners
Der ParallelForEach<T>-Aktivitätsdesigner befindet sich in der Kategorie Ablaufsteuerung der Toolbox, auf die Sie zugreifen können, indem Sie auf der linken Seite von Workflow-Designer auf die Registerkarte Toolbox klicken (Sie können auch im Menü Ansicht den Befehl Symbolleiste auswählen oder STRG+ALT+X drücken).
Der ParallelForEach<T>-Aktivitätsdesigner kann aus der Toolbox gezogen und auf der Workflow-Designer-Oberfläche dort abgelegt werden, wo Aktivitätsdesigner normalerweise platziert werden, z. B. innerhalb eines Sequence-Aktivitätsdesigners. Nachdem der Aktivitätsdesigner in Workflow-Designer abgelegt wurde, erstellt er eine ParallelForEach-Aktivität mit dem standardmäßigen DisplayName ParallelForEach<Int32>.
ParallelForEach-<T>-Eigenschaften im Workflow-Designer
In der folgenden Tabelle werden die nützlichsten Eigenschaften der ParallelForEach-Aktivität aufgeführt, und es wird beschrieben, wie sie im Designer verwendet werden.
| Eigenschaftenname | Erforderlich | Verwendung |
|---|---|---|
DisplayName |
False |
Gibt den benutzerfreundlichen Anzeigenamen des Aktivitätsdesigners im Header an. Der Standardwert lautet ParallelForEach<Int32>. Der Wert kann optional im Raster Eigenschaften oder direkt im Header des Aktivitätsdesigners bearbeitet werden. |
Body |
False |
Die Aktivität, die für jedes Element in der Auflistung ausgeführt werden soll. Sie fügen die Body-Aktivität hinzu, indem Sie eine Aktivität aus der Toolbox in das Feld Body mit dem Hinweistext "Aktivität hier ablegen" des ParallelForEach<T>-Aktivitätsdesigners ziehen. |
TypeArgument |
True |
Der Typ der Elemente in der Values-Auflistung, der durch den generischen Parameter T angegeben wird. Standardmäßig ist TypeArgument auf Int32 festgelegt. Um den Typ T im ParallelForEach<T>-Aktivitätsdesigner zu ändern, wählen Sie im Eigenschaftenraster für TypeArgument im Kombinationsfeld einen anderen Wert aus. |
Values |
True |
Die Auflistung, deren Elemente durchlaufen werden. Um Values festzulegen, geben Sie im Feld Werte des ForEach<T>-Aktivitätsdesigner im Feld mit dem Hinweistext "VB-Ausdruck eingeben" oder im Feld Werte des Fensters Eigenschaften einen Visual Basic-Ausdruck ein. |
CompletionCondition |
Die Auswertung erfolgt nach Abschluss der einzelnen Iterationen. Ergibt die Auswertung True, werden die geplanten ausstehenden Iterationen abgebrochen. Wenn diese Eigenschaft nicht festgelegt ist, werden alle geplanten Anweisungen bis zur Beendigung ausgeführt. |
Standardmäßig hat der Schleifeniterator die Bezeichnung "item". Sie können den Namen der Iteratorvariablen im Feld ForEach des ParallelForEach<T>-Aktivitätsdesigners ändern. Der Schleifeniterator kann in den untergeordneten Elementen der ParallelForEach-Aktivität in Ausdrücken verwendet werden.
Siehe auch
Konzepte
Sequence-Aktivitätsdesigner
Parallel-Aktivitätsdesigner