Freigeben über


Schachteln von TransactionScope

Dieses Thema gilt für Windows Workflow Foundation 4.

Dieses Beispiel veranschaulicht die Schachtelung von TransactionScope-Instanzen anhand von vier Szenarios. Im ersten Szenario wird die Aktivität eines Drittanbieters geschachtelt, deren Konstruktionsmethode dem Autor nicht bekannt ist. Im zweiten und dritten Szenario wird die Einhaltung von Timeouts veranschaulicht, und im letzten Szenario wird die AbortInstanceOnTransactionFailure-Einstellung gezeigt.

Schachteln der TransactionScopeActivity

Der Workflow des ersten Szenarios besteht aus einer Sequenz mit zwei WriteLine-Aktivitäten und einem TransactionScope-Element. Der TransactionScope-Textkörper besteht aus zwei weiteren WriteLine-Aktivitäten, einer benutzerdefinierten Aktivität zur Ausgabe des lokalen Bezeichners der Transaktion und einer Drittanbieteraktivität. Die Drittanbieteraktivität TransactionScopeTest enthält ein TransactionScope-Element, was dem Workflowautor aber nicht bekannt ist. Dieses Szenario zeigt, dass TransactionScope-Aktivitäten geschachtelt werden können.

Timeouts

Der Workflow des zweiten Szenarios ist nahezu identisch mit dem Workflow des ersten Szenarios. Die TransactionScopeTest-Aktivität wurde durch ein TransactionScope-Element ersetzt. Der TransactionScope-Textkörper ist eine Verzögerung mit einer Länge von fünf Sekunden, und das Timeout für die Transaktion wurde auf zwei Sekunden festgelegt. Das Timeout für den äußeren TransactionScope ist auf zehn Sekunden festgelegt. Beachten Sie, dass der kleinste Timeoutwert des Bereichs Anwendung findet und ein Timeout der Transaktion auftritt.

Der Workflow des dritten Szenarios ist nahezu identisch mit dem Workflow des zweiten Szenarios. Die Verzögerungsaktivität wurde aus dem Textkörper des inneren TransactionScope an die Position unmittelbar nach diesem Bereich im Textkörper des äußeren TransactionScope verschoben. Es tritt nach wie vor ein Timeout auf, aber der Timeoutwert von zwei Sekunden im inneren TransactionScope findet keine Anwendung mehr. Das Timeout tritt nach zehn Sekunden auf, wenn der Timeoutwert des äußeren TransactionScope überschritten wird.

Abbrechen bei Transaktionsfehler

Dieser Workflow ist identisch mit dem Workflow im dritten Szenario, mit dem Unterschied, dass die Timeouts durch die AbortInstanceOnTransactionFailure-Eigenschaft ersetzt wurden. Beachten Sie, dass die Flags aller inneren untergeordneten Elemente (falls festgelegt) dem äußeren TransactionScope entsprechen müssen. Dies ist in diesem Szenario nicht der Fall, und beim Öffnen des Workflows wird eine Ausnahme ausgelöst.

So führen Sie das Beispiel aus

  1. Öffnen Sie in Visual Studio 2010 die Projektmappe "NestedTransactionScopeActivitySample.sln".

  2. Um die Projektmappe zu erstellen, drücken Sie F6, oder wählen Sie Projektmappe erstellen im Menü Erstellen aus.

  3. Drücken Sie nach erfolgreicher Erstellung F5, oder wählen Sie im Menü Debuggen die Option Debugging starten. Zur Ausführung ohne Debugging drücken Sie STRG+F5 oder wählen Starten ohne Debugging im Menü Debuggen.

Dd807498.Important(de-de,VS.100).gif 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\Transactions\NestedTransactionScope