Partager via


Exécuter un workflow dans un TransactionScope impératif

Cette rubrique s'applique à Windows Workflow Foundation 4.

Cet exemple montre comment exécuter un workflow à l'aide de WorkflowInvoker sous un Transaction à partir de code C# impératif.

Détails de l'exemple

Dans le code C# impératif, le TransactionScope est utilisé pour encapsuler un jeu de travail qui est exécuté sous la même transaction. Le TransactionScope fonctionne en créant une transaction ambiante et en initialisant la propriété Current, qui est ensuite accessible par tout travail qui est exécuté sur ce thread.

Pour obtenir un comportement équivalent dans le workflow, l'exécution doit effectuer le travail supplémentaire d'initialisation de Current avant d'exécuter chaque activité parce qu'un workflow ne gère pas l'affinité de thread entre les activités. Le comportement résultant est avec cette prise en charge de l'exécution est que, lors de l'exécution d'un workflow avec WorkflowInvoker à l'intérieur d'un TransactionScope, l'exécution de toutes les activités est garantie sous le contexte de la transaction ambiante créée par le TransactionScope.

Un workflow peut avoir uniquement une transaction ambiante unique pour chaque instance de workflow ; les transactions imbriquées ne sont pas disponibles. Même si le workflow contient une activité TransactionScope, cela ne crée pas de transaction interne. À la place, la transaction ambiante créée à l'extérieur du workflow est réutilisée.

L'exemple commence un nouveau TransactionScope, imprime l'ID de transaction et démarre un workflow à l'aide de WorkflowInvoker. Le workflow imprime à nouveau l'ID de transaction, ce qui montre qu'il s'agit de la même transaction, exécute un TransactionScope, puis se termine. L'appel Invoke sur WorkflowInvoker étant synchrone, le thread d'origine se bloque jusqu'à ce que le workflow soit terminé. Une fois le workflow terminé, la transaction est effectuée et les ressources supprimées.

Pour utiliser cet exemple

  1. À l'aide de Visual Studio 2010, ouvrez le fichier solution ImperativeTransactionSample.sln.

  2. Pour générer la solution, appuyez sur F6.

  3. Pour exécuter la solution, appuyez sur F5.

Dd759027.Important(fr-fr,VS.100).gif Remarque :
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.

<LecteurInstall>:\WF_WCF_Samples

Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.

<LecteurInstall>:\WF_WCF_Samples\WF\Scenario\Transactions\ImperativeTransaction