Annidamento di TransactionScope
Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.
Questo esempio è costituito da quattro scenari che vengono eseguiti illustrando come annidare istanze di TransactionScope. Nel primo scenario viene illustrato l'annidamento di un'attività di terze parti di cui l'autore non dispone di informazioni sulla modalità di costruzione. Nel secondo e nel terzo scenario viene illustrato come vengono rispettati timeout, mentre nello scenario finale viene illustrata l'impostazione di AbortInstanceOnTransactionFailure.
Annidamento di TransactionScopeActivity
Il flusso di lavoro per il primo scenario è costituito da una sequenza di due attività WriteLine e una TransactionScope. Il corpo di TransactionScope è una sequenza delle altre due attività WriteLine, un'attività personalizzata che stampa l'identificatore locale della transazione e un'attività di terze parti. L'attività di terze parti TransactionScopeTest
contiene un oggetto TransactionScope anche se l'autore del flusso di lavoro non ha modo di esserne a conoscenza. In questo scenario viene illustrato che le attività TransactionScope possono essere annidate.
Timeout
Il flusso di lavoro per il secondo scenario è quasi identico al primo. TransactionScopeTest
è stato sostituito con TransactionScope. Il corpo di TransactionScope ha un ritardo di cinque secondi e il timeout per la transazione è impostato su due secondi. Il valore del timeout per l'attività TransactionScope esterna è impostato su 10 secondi. Notare che viene rispettato il timeout inferiore presente nell'ambito e la transazione scade.
Il flusso di lavoro per il terzo scenario è quasi identico al secondo scenario. L'attività di ritardo è stata spostata dal corpo dell'attività TransactionScope interna immediatamente dopo di essa nella sequenza, ovvero il corpo dell'attività TransactionScope esterna. La transazione scade ancora perché il timeout di due secondi dell'attività TransactionScope interna non è più applicabile. La transazione scade a 10 secondi quando viene superato il timeout dell'attività TransactionScope esterna.
Interruzione in caso di errore della transazione
Questo flusso di lavoro è simile al terzo scenario, salvo il fatto che i timeout sono stati sostituiti dalla proprietà AbortInstanceOnTransactionFailure. Notare che i flag di tutti gli elementi figlio interni, se impostati, devono corrispondere all'attività TransactionScope esterna. In questo scenario non corrispondono e quindi viene generata un'eccezione all'apertura del flusso di lavoro.
Per eseguire l'esempio
Aprire la soluzione NestedTransactionScopeActivitySample.sln in Visual Studio 2010.
Per compilare la soluzione, premere F6 o scegliere Compila soluzione dal menu Compila.
Una volta completata la compilazione, premere F5 o scegliere Avvia debug dal menu Debug. In alternativa è possibile premere CTRL+F5 o scegliere Avvia senza eseguire debug dal menu Debug per l'esecuzione senza debug.
![]() |
---|
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.
<UnitàInstallazione>:\WF_WCF_Samples
Se questa directory non esiste, vedere la pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi di Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.
<UnitàInstallazione>:\WF_WCF_Samples\WF\Basic\Transactions\NestedTransactionScope
|