NoPersistScope-Aktivität
Dieses Thema gilt für Windows Workflow Foundation 4.
In diesem Beispiel wird gezeigt, wie ein nicht serialisierbarer und verwerfbarer Zustand innerhalb eines Workflows bearbeitet wird. Es ist wichtig, dass Workflows nicht versuchen, den nicht serialisierbaren Zustand beizubehalten, und dass verwerfbare Objekte bereinigt werden, nachdem sie im Workflow verwendet wurden.
Veranschaulicht
Benutzerdefinierte Aktivität NoPersistScope
und Designer.
Verwenden der NoPersistZone-Aktivität
Wenn der Beispielworkflow ausgeführt wird, erstellt eine benutzerdefinierte Aktivität mit dem Namen CreateTextWriter
ein Objekt des Typs TextWriter und speichert es in einer Workflowvariablen. TextWriter ist ein IDisposable-Objekt. Dieser TextWriter, der zum Schreiben in eine Datei mit dem Namen 'out.txt' in dem Verzeichnis, in dem das Beispiel ausgeführt wird, konfiguriert ist, wird von einer WriteLine-Aktivität verwendet, da sie jeden an der Konsole eingegebenen Text wiederholt.
Die Wiederholungslogik wird in einer NoPersistScope
-Aktivität ausgeführt (deren Code ebenfalls Teil dieses Beispiels ist), wodurch der Workflow an der Beibehaltung gehindert wird. Wenn Sie in der Konsole unload eingeben, versucht der Host, die Workflowinstanz beizubehalten. Es kommt jedoch zu einem Timeout dieses Vorgangs, da der Workflow innerhalb eines NoPersistScope
bleibt. Der Workflow verwendet außerdem eine benutzerdefinierte Aktivität mit dem Namen Dispose
, um das TextWriter-Objekt zu verwerfen, sobald der Workflow es nicht mehr verwendet. Die Dispose
-Aktivität wird innerhalb des Finally-Blocks der TryCatch-Aktivität platziert, in dem die TextWriter-Variable deklariert wird. Auf diese Weise wird sichergestellt, dass sie auch dann ausgeführt wird, falls während der Ausführung des Try-Blocks eine Ausnahme auftreten sollte.
Sie können exit eingeben, um die Workflowinstanz abzuschließen und das Programm zu beenden.
So führen Sie das Beispiel aus
Öffnen Sie die NoPersistZone.sln-Projektmappe in Visual Studio 2010.
Um die Projektmappe zu erstellen, drücken Sie F6, oder wählen Sie Projektmappe erstellen im Menü Erstellen aus.
Drücken Sie nach dem erfolgreichen Erstellen die Taste F5, oder wählen Sie Debuggen starten im Menü Debuggen. Sie können auch STRG+F5 drücken oder Starten ohne Debuggen im Menü Debuggen wählen.
So führen Sie eine (optionale) Bereinigung durch
- Führen Sie zum Entfernen des SQL-Instanzspeichers Cleanup.cmd aus.
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\Scenario\ActivityLibrary\NoPersistScope
|