ParallelForEach-Aktivitätsdesigners
Die ParallelForEach<T>-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<T>-Aktivität verfügt über die CompletionCondition-Eigenschaft, die einen benutzerdefinierten Visual Basic-Ausdruck enthält. Die ParallelForEach<T>-Aktivität wertet diese Eigenschaft aus, nachdem alle Branches abgeschlossen sind. Wenn die Eigenschaft true ist, wird die ParallelForEach<T>-Aktivität abgeschlossen, ohne die anderen Branches auszuführen. Wenn CompletionCondition nicht den Wert true aufweist, wird die ParallelForEach<T>-Aktivität abgeschlossen, nachdem alle seine untergeordneten Aktivitäten abgeschlossen sind.
Die ParallelForEach<T>-Aktivität
ParallelForEach<T> listet seine Werte auf und führt Body für jeden aufgelisteten Wert aus. 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. Wenn Sie beispielsweise über die Auflistung {1,2,3,4} in ParallelForEach<T> verfügen und WriteLine als Body verwenden, um den Wert auszugeben, wird in der Konsole „4, 3, 2, 1“ ausgegeben. Dies erfolgt, weil WriteLine aktiv bleibt, sodass 4 WriteLine-Aktivitäten nacheinander (mit der zuletzt geplanten Aktivität als erste) 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 ist es nicht notwendig, auf den Abschluss zu warten. ParallelForEach<T> versucht dann, die nächste geplante Textkörperaktivität auszuführen. Wenn auch diese in den Leerlauf übergeht, bewegt sich ParallelForEach<T> zum Textkörper der nächsten Aktivität.
Verwenden des ParallelForEach<T>-Aktivitätsdesigners
Sie greifen auf den ParallelForEach<T>-Aktivitätsdesigner in der Kategorie Ablaufsteuerung der Toolbox zu.
Der ParallelForEach<T>-Aktivitätsdesigner kann aus der Toolbox gezogen und auf der Workflow-Designer-Oberfläche dort eingefügt werden, wo Aktivitätsdesigner normalerweise platziert werden, z. B. innerhalb eines Sequence-Aktivitätsdesigners. Nachdem der Aktivitätsdesigner im Workflow-Designer eingefügt wurde, wird eine ParallelForEach<T>-Aktivität mit dem Standardwert DisplayName von ParallelForEach<Int32> erstellt.
ParallelForEach<T>-Eigenschaften im Workflow-Designer
In der folgenden Tabelle werden die nützlichsten Eigenschaften der ParallelForEach<T>-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 ist ParallelForEach<Int32>. Der Wert kann optional im Eigenschaftenraster oder direkt im Header des Aktivitätsdesigners bearbeitet werden. |
Body | Falsch | 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 den ParallelForEach<T>-Aktivitätsdesigner in das Feld Body mit dem Hinweistext „Aktivität hier ablegen“ ziehen. |
TypeArgument | True | Der Typ der Elemente in der Values-Auflistung, die durch den generischen Parameter T angegeben wird. Standardmäßig ist TypeArgument auf Int32 festgelegt. Um den T-Typ im ParallelForEach<T>-Aktivitätsdesigner zu ändern, ändern Sie im Eigenschaftenraster den Wert für das Kombinationsfeld TypeArgument. |
Values | True | Die Auflistung, deren Elemente durchlaufen werden. Um Values festzulegen, geben Sie im Feld Werte des ForEach<T>-Aktivitätsdesigners 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<T>-Aktivität in Ausdrücken verwendet werden.