Emulierungsunterbrechung in einer While-Aktivität
Dieses Thema gilt für Windows Workflow Foundation 4.
In diesem Beispiel wird veranschaulicht, wie der Schleifenmechanismus der folgenden Aktivitäten unterbrochen werden kann: DoWhile, ForEach, While und ParallelForEach.
Dies ist hilfreich, da Windows Workflow Foundation (WF) keine Aktivität zur Unterbrechung der Ausführung dieser Schleifen umfasst.
Szenario
In dem Beispiel wird der erste zuverlässige Anbieter in einer Liste von Anbietern (Instanzen der Vendor
-Klasse) gesucht. Jeder Anbieter verfügt über eine ID
, einen Name
und einen numerischen Zuverlässigkeitswert, der bestimmt, wie verlässlich der Anbieter ist. In dem Beispiel wird eine benutzerdefinierte Aktivität mit dem Namen FindReliableVendor
erstellt, die zwei Eingabeparameter (eine Liste mit Anbietern und einem minimalen Zuverlässigkeitswert) empfängt und den ersten Anbieter der Liste zurückgibt, der eine Entsprechung für die angegebenen Kriterien darstellt.
Unterbrechen einer Schleife
Windows Workflow Foundation (WF) umfasst keine Aktivität zur Unterbrechung einer Schleife. In dem Codebeispiel wird die Unterbrechung einer Schleife durch Verwendung einer If-Aktivität und mehreren Variablen erzielt. Im Beispiel wird die While-Aktivität unterbrochen, sobald die reliableVendor
-Variable einem anderen Wert als NULL zugewiesen wird.
Im folgenden Codebeispiel wird veranschaulicht, wie eine while-Schleife unterbrochen wird.
// Iterates while the “i” variable is lower than the size of the list
// and any reliable Vendor is found.
new While(env => i.Get(env) < this.Vendors.Get(env).Count && reliableVendor.Get(env) == null)
{
DisplayName = "Main loop. Breaks when a reliable vendor is found",
Body = new Sequence
{
Activities =
{
// This is the if used for setting the value of the break value…
new If
{
DisplayName = "Check for a reliable vendor",
// If a vendor satisfies the reliability level…
Condition = new InArgument<bool>(env =>
this.Vendors.Get(env)[i.Get(env)].Reliability >
this.MinimumReliability.Get(env)),
// then assign that vendor to the reliable vendor variable and
// the while condition becomes false (exit the loop).
Then = new Assign<Vendor>
{
To = reliableVendor,
Value = new InArgument<Vendor>(env =>
this.Vendors.Get(env)[i.Get(env)])
}
},
// Increment the iteration variable.
new Assign<int>
{
DisplayName = "Increment iteration variable",
To = i,
Value = new InArgument<int>(env => i.Get(env) + 1)
}
}
}
}
So verwenden Sie dieses Beispiel
Öffnen Sie die Projektmappendatei "EmulatingBreakInWhile" in Visual Studio 2010.
Drücken Sie F6, um die Projektmappe zu erstellen.
Drücken Sie STRG+F5, um die Projektmappe auszuführen.
Hinweis: |
---|
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.
<Installationslaufwerk>:\WF_WCF_Samples
Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.
<Installationslaufwerk>:\WF_WCF_Samples\WF\Basic\Built-InActivities\EmulatingBreakInWhile
|