Transaction.DependentClone(DependentCloneOption) Méthode

Définition

Crée un clone dépendant de la transaction.

C#
public System.Transactions.DependentTransaction DependentClone (System.Transactions.DependentCloneOption cloneOption);
C#
public System.Transactions.DependentTransaction DependentClone (System.Transactions.DependentCloneOption option);

Paramètres

cloneOptionoption
DependentCloneOption

DependentCloneOption qui contrôle le type de transaction dépendante à créer.

Retours

DependentTransaction

DependentTransaction qui représente le clone dépendant.

Exemples

L’exemple suivant montre comment créer une transaction dépendante.

C#
static void Main(string[] args)
{
    try
    {
        using (TransactionScope scope = new TransactionScope())
        {
            // Perform transactional work here.

            //Queue work item
            ThreadPool.QueueUserWorkItem(new WaitCallback(WorkerThread), Transaction.Current.DependentClone(DependentCloneOption.BlockCommitUntilComplete));

            //Display transaction information
            Console.WriteLine("Transaction information:");
            Console.WriteLine("ID:             {0}", Transaction.Current.TransactionInformation.LocalIdentifier);
            Console.WriteLine("status:         {0}", Transaction.Current.TransactionInformation.Status);
            Console.WriteLine("isolationlevel: {0}", Transaction.Current.IsolationLevel);

            //Call Complete on the TransactionScope based on console input
            ConsoleKeyInfo c;
            while (true)
            {
                            Console.Write("Complete the transaction scope? [Y|N] ");
                c = Console.ReadKey();
                Console.WriteLine();

                if ((c.KeyChar == 'Y') || (c.KeyChar == 'y'))
                {
                    //Call complete on the scope
                    scope.Complete();
                    break;
                }
                else if ((c.KeyChar == 'N') || (c.KeyChar == 'n'))
                {
                    break;
                }
            }
        }
    }
    catch (System.Transactions.TransactionException ex)
    {
        Console.WriteLine(ex);
    }
    catch
    {
        Console.WriteLine("Cannot complete transaction");
        throw;
    }
}

private static void WorkerThread(object transaction)
{
    //Create a DependentTransaction from the object passed to the WorkerThread
    DependentTransaction dTx = (DependentTransaction)transaction;

    //Sleep for 1 second to force the worker thread to delay
    Thread.Sleep(1000);

    //Pass the DependentTransaction to the scope, so that work done in the scope becomes part of the transaction passed to the worker thread
    using (TransactionScope ts = new TransactionScope(dTx))
    {
        //Perform transactional work here.

        //Call complete on the transaction scope
        ts.Complete();
    }

    //Call complete on the dependent transaction
    dTx.Complete();
}

Remarques

Une transaction dépendante est une transaction dont le résultat dépend du résultat de la transaction à partir de laquelle elle a été cloné.

Le cloneoption paramètre contrôle le type de transaction dépendante à créer. Si une transaction dépendante est créée avec BlockCommitUntilComplete, elle bloque le processus de validation de la transaction jusqu’à ce que la transaction expire ou Complete soit appelée sur le DependentTransaction. S’il est créé avec RollbackIfNotComplete, il abandonne automatiquement la transaction si Commit elle est appelée avant Complete d’être appelée sur le DependentTransaction.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Voir aussi