Share via


Anidar TransactionScope

Este tema es aplicable a Windows Workflow Foundation 4.

Este ejemplo consta de cuatro escenarios que se ejecutan para mostrar cómo se anidan instancias de TransactionScope. El primer escenario muestra la anidación de una actividad de terceros de la que el autor no conoce su construcción. El segundo y tercer escenarios muestran cómo se respetan los tiempos de espera y el último escenario muestra el valor de AbortInstanceOnTransactionFailure.

Anidar TransactionScopeActivity

El flujo de trabajo del primer escenario consta de una secuencia de dos actividades WriteLine y una actividad TransactionScope. El cuerpo de TransactionScope es una secuencia de dos actividades WriteLine más, una actividad personalizada que imprime el identificador local de la transacción y una actividad de terceros. La actividad TransactionScopeTest de terceros contiene una actividad TransactionScope aunque el autor del flujo de trabajo no tiene manera de saberlo. Este escenario muestra que las actividades TransactionScope pueden estar anidadas.

Tiempos de espera

El flujo de trabajo del segundo escenario es prácticamente idéntico al primero. TransactionScopeTest se ha reemplazado con TransactionScope. El cuerpo de la actividad TransactionScope es un retraso de cinco segundos y el tiempo de espera para la transacción se establece en dos segundos. El tiempo de espera de la actividad TransactionScope se establece en 10 segundos. Observe que se respeta el tiempo de espera más reducido en el ámbito y que la transacción expira.

El flujo de trabajo del tercer escenario es prácticamente idéntico al escenario dos. La actividad de retraso se ha movido del cuerpo de la actividad TransactionScope interior a una posición inmediatamente después de ella en la secuencia que es el cuerpo de la actividad TransactionScope exterior. La transacción todavía expira, pero el tiempo de espera de dos segundos de la actividad TransactionScope interior ya no se aplica. La transacción expira a los 10 segundos cuando se supera el tiempo de espera de la actividad TransactionScope exterior.

Anular por error de la transacción

Este flujo de trabajo es similar al escenario tres excepto que los tiempos de espera se han reemplazado por la propiedad AbortInstanceOnTransactionFailure. Tenga en cuenta que las marcas de todos los elementos secundarios internos, si se establecen, deben coincidir con la actividad TransactionScope exterior. En este escenario no lo hacen, por lo que se produce una excepción cuando se abre el flujo de trabajo.

Para ejecutar el ejemplo

  1. Abra la solución NestedTransactionScopeActivitySample.sln en Visual Studio 2010.

  2. Para compilar la solución, presione F6 o seleccione Generar solución en el menú Generar.

  3. Cuando la compilación finalice correctamente, presione 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 para realizar la ejecución sin depuración.

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

<unidadDeInstalación>:\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.

<unidadDeInstalación>:\WF_WCF_Samples\WF\Basic\Transactions\NestedTransactionScope