Share via


Controlador de cancelación en una actividad compensable

Este tema es aplicable a Windows Workflow Foundation 4.

En este ejemplo se muestra el uso de un controlador de cancelación en un objeto CompensableActivity.

Este ejemplo incluye dos escenarios que muestran el uso de la cancelación de CompensableActivity. El primero contiene una actividad compensable raíz que contiene tres actividades compensables secundarias. Dos actividades secundarias terminan de ejecutar sus cuerpos de actividad correctamente. Cuando el cuerpo de la tercera actividad secundaria se ejecuta, encuentra una excepción que se controla cancelando el proceso de la tercera actividad, tras lo cual se activa la cancelación de la actividad raíz. La lógica de la actividad raíz de este ejemplo es compensar las otras dos actividades secundarias que se completaron anteriormente.

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...
}

El segundo escenario muestra cómo ejecutar TryCatch en paralelo con Delay, que finaliza antes de la bifurcación TryCatch. La condición de la realización se establece en true una vez finalizada la primera bifurcación, lo que causa la cancelación de la otra bifurcación.

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

Para configurar, compilar y ejecutar el ejemplo

  1. Abra CompensationCancellation.sln con Visual Studio 2010.

  2. Compile el ejemplo presionando F6 o seleccione "Generar solución" en el menú Generar.

  3. Ejecute el ejemplo presionando F5 o seleccione "Iniciar depuración" en el menú Depurar. También, puede presionar Ctrl+F5 o seleccionar "Iniciar sin depurar" en el menú Depurar.

Dd807518.Important(es-es,VS.100).gif Nota:
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.

<InstallDrive>:\WF_WCF_Samples

Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de Windows Communication Foundation (WCF) y WF. Este ejemplo se encuentra en el siguiente directorio.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Compensation\CompensationCancellation