Gestore di annullamento nell'attività compensabileCancellation Handler on Compensable Activity

In questo esempio viene illustrato l'uso di un gestore di annullamento in un oggetto CompensableActivity.This sample demonstrates the use of a cancellation handler on a CompensableActivity.

Nell'esempio sono disponibili due scenari in cui viene illustrato l'uso dell'annullamento dell'oggetto CompensableActivity. Nel primo scenario è inclusa un'attività compensabile radice che contiene tre attività compensabili figlio.This sample contains two scenarios that demonstrate the use of CompensableActivity cancellation.The first scenario contains a root compensable activity that contains three child compensable activities. Le due attività figlio completano correttamente l'esecuzione dei relativi corpi delle attività.Two child activities finish running their activity bodies successfully. Quando viene eseguito il corpo della terza attività figlio, viene rilevata un'eccezione gestita annullando l'elaborazione della terza attività, dopo che viene attivato l'annullamento dell'attività radice.When the third child activity body runs, it encounters an exception that is handled by canceling the third activity processing, after which the cancellation of the root activity is triggered. La logica nell'attività radice in questo esempio consiste nel compensare le altre due attività figlio che vengono completate precedentemente.The logic in the root activity in this example is to compensate the other two child activities that completed earlier.

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

Nel secondo scenario viene illustrata l'esecuzione di un oggetto TryCatch in parallelo con un oggetto Delay che termina prima del ramo TryCatch.The second scenario demonstrates executing a TryCatch in parallel with a Delay, which finishes before the TryCatch branch. La condizione di completamento viene impostata su true una volta terminato il primo ramo, determinando l'annullamento dell'altro ramo.The completion condition is set to true once the first branch finishes, causing the other branch to be canceled.

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

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. In Visual Studio 2010Visual Studio 2010 aprire CompensationCancellation.sln.Using Visual Studio 2010Visual Studio 2010, open CompensationCancellation.sln.

  2. Compilare l'esempio premendo CTRL + MAIUSC + B o selezionare "Compila soluzione" dal menu Compila.Build the sample by pressing CTRL+SHIFT+B or select "Build Solution" from the Build menu..

  3. Eseguire l'esempio premendo F5 o selezionare "Avvia debug" dal menu Debug.Run the sample by pressing F5 or select "Start Debugging" from the Debug menu. In alternativa, è possibile premere Ctrl+F5 o selezionare "Avvia senza eseguire debug" dal menu Debug.Alternately you may press Ctrl+F5 or select "Start without Debugging" from the Debug menu.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

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