Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es aplicable a Windows Workflow Foundation 4.
En este ejemplo se muestra cómo ejecutar un flujo de trabajo utilizando WorkflowInvoker en un objeto Transaction con código C# imperativo.
Detalles del ejemplo
En el código C# imperativo, el objeto TransactionScope se utiliza para encapsular un conjunto de trabajo que se ejecuta en la misma transacción. TransactionScope funciona creando una transacción ambiente e inicializando la propiedad Current a la que puede tener acceso cualquier trabajo que se esté ejecutando en ese subproceso.
Para obtener el comportamiento equivalente en el flujo de trabajo, el tiempo de ejecución tiene que realizar el trabajo extraordinario de inicializar Current antes de ejecutar cada actividad porque un flujo de trabajo no mantiene la afinidad del subproceso entre actividades. Con esta compatibilidad con el motor en tiempo de ejecución, el comportamiento resultante es que al ejecutar un flujo de trabajo con WorkflowInvoker dentro de TransactionScope, se garantiza que todas las actividades se ejecutarán en el contexto de la transacción ambiente creado por TransactionScope.
Un flujo de trabajo puede tener solo una transacción ambiente única para cada instancia de flujo de trabajo; las transacciones anidadas no están disponibles. Aunque el flujo de trabajo contenga una actividad TransactionScope, no se crea una transacción interna. En su lugar, se reutiliza la transacción ambiente que se creó fuera del flujo de trabajo.
El ejemplo comienza un nuevo TransactionScope, imprime el identificador de la transacción y comienza un flujo de trabajo mediante WorkflowInvoker. El flujo de trabajo imprime de nuevo el identificador de la transacción, mostrando que es la misma transacción; a continuación, ejecuta TransactionScope y, después, se completa. La llamada de Invoke en WorkflowInvoker es sincrónica para que el subproceso original se bloquee hasta que el flujo de trabajo se complete. Cuando el flujo de trabajo finaliza, la transacción se completa y los recursos se eliminan.
Para utilizar este ejemplo
Abra el archivo de solución ImperativeTransactionSample.sln con Visual Studio 2010.
Presione F6 para compilar la solución.
Presione F5 para ejecutar la solución.
![]() |
---|
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 WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Transactions\ImperativeTransaction
|