Partager via


Imbrication de TransactionScope

Cette rubrique s'applique à Windows Workflow Foundation 4.

Cet exemple est composé de quatre scénarios qui s'exécutent pour montrer comment imbriquer des instances TransactionScope. Le premier scénario présente l'imbrication d'une activité tierce dont l'auteur ignore totalement la construction. Les deuxième et troisième scénarios montrent comment les délais d'expiration sont respectés, et le dernier scénario présente le paramètre AbortInstanceOnTransactionFailure.

Imbrication de TransactionScopeActivity

Le workflow du premier scénario se compose d'une séquence de deux activités WriteLine et d'un TransactionScope. Le corps de TransactionScope est une séquence de deux autres activités WriteLine, d'une activité personnalisée qui imprime l'identificateur local de la transaction et d'une activité tierce. L'activité TransactionScopeTest tierce contient un TransactionScope, mais l'auteur du workflow n'a aucun moyen de le savoir. Ce scénario montre que les activités TransactionScope peuvent être imbriquées.

Délais d'expiration

Le workflow du deuxième scénario est presque identique au premier. TransactionScopeTest a été remplacé par un TransactionScope. Le corps de TransactionScope est un délai de cinq secondes et le délai d'expiration de la transaction est défini à deux secondes. La valeur du délai d'expiration de TransactionScope est de 10 secondes. Notez que le plus petit délai d'expiration de l'étendue est respecté et que la transaction expire.

Le workflow du troisième scénario est presque identique au deuxième scénario. L'activité de délai a été déplacée du corps du TransactionScope interne vers l'emplacement immédiatement après lui dans la séquence qui est le corps du TransactionScope externe. La transaction expire toujours, mais cela est dû au fait que le délai d'expiration de deux secondes du TransactionScope interne ne s'applique plus. La transaction expire au bout de 10 secondes lorsque le délai d'expiration du TransactionScope externe est dépassé.

Abandon en cas d'échec de la transaction

Ce workflow est semblable au troisième scénario, excepté que les délais d'expiration ont été remplacés par la propriété AbortInstanceOnTransactionFailure. Notez que les indicateurs de tous les enfants internes, s'ils sont définis, doivent correspondre au TransactionScope externe. Dans ce scénario, ils ne le sont pas, et une exception est levée lorsque le workflow s'ouvre.

Pour exécuter l'exemple

  1. Ouvrez la solution NestedTransactionScopeActivitySample.sln dans Visual Studio 2010.

  2. Pour générer la solution, appuyez sur F6 ou sélectionnez Générer la solution dans le menu Générer.

  3. Une fois que la génération a réussi, appuyez sur F5 ou sélectionnez Démarrer le débogage dans le menu Déboguer. Vous pouvez également appuyer sur CTRL+F5 ou sélectionner Exécuter sans débogage dans le menu Déboguer pour effectuer une exécution sans débogage.

Dd807498.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\Basic\Transactions\NestedTransactionScope