Abbruchhandler für kompensierbare Aktivität

Dieses Thema gilt für Windows Workflow Foundation 4.

In diesem Beispiel wird die Verwendung eines Abbruchhandlers für eine CompensableActivity veranschaulicht.

Dieses Beispiel umfasst zwei Szenarien, die die Verwendung des Abbruchs von CompensableActivity veranschaulichen. Das erste Szenario enthält eine kompensierbare Stammaktivität, die drei untergeordnete kompensierbare Aktivitäten enthält. Zwei untergeordnete Aktivitäten beenden ihre Aktivitätstextkörper erfolgreich. Wenn der Textkörper der dritten untergeordneten Aktivität ausgeführt wird, tritt eine Ausnahme auf, die durch das Abbrechen der Verarbeitung der dritten Aktivität behandelt wird. Anschließend wird der Abbruch der Stammaktivität ausgelöst. Die Logik der Stammaktivität in diesem Beispiel ist, die anderen beiden untergeordneten Aktivitäten zu kompensieren, die bereits abgeschlossen wurden.

Try
{
    CA 
    {
        CA1 
        {
        }
        CA2
        {
        }
        CA3
        {
            //Exception here
            // Then this will get cancelled
        }

       // Cancellation for the root activity automatically gets called, which, in turn, adds some logic to revert what was done (Or can decide to actually confirm CA1 & CA2 if the user so desires).
    }
}
Catches {
// Can do more stuff...
}

Das zweite Szenario veranschaulicht das Ausführen eines TryCatch parallel mit einem Delay, der vor der TryCatch-Verzweigung beendet wird. Die Abschlussbedingung wird auf true festgelegt, sobald die erste Verzweigung beendet wurde, woraufhin die andere Verzweigung abgebrochen wird.

Parallel 
{
    Branch1 
    {
        // Small Delay that times out (timeout1) before branch2.
    }
    Branch2 
    {
        CA 
        {
            CA1 
            {
            }
            CA2 
            {
            }
            CA3 
            {
            }
            If (timeout1)  
            {
                call Cancel CA
            }
        }
    }
}

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Öffnen Sie mit Visual Studio 2010 die CompensationCancellation.sln-Projektmappe.

  2. Erstellen Sie das Beispiel, indem Sie F6 drücken, oder wählen Sie im Menü Erstellen die Option Projektmappe erstellen aus.

  3. Führen Sie das Beispiel aus, indem Sie F5 drücken, oder wählen Sie im Menü Debuggen die Option Debugging starten aus. Sie können auch STRG+F5 drücken oder im Menü Debuggen die Option Starten ohne Debugging auswählen.

Dd807518.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\Compensation\CompensationCancellation