Afficher en anglais

Partage via


Transaction.TransactionCompleted Événement

Définition

Indique que la transaction est terminée.

C#
public event System.Transactions.TransactionCompletedEventHandler? TransactionCompleted;
C#
public event System.Transactions.TransactionCompletedEventHandler TransactionCompleted;

Type d'événement

Exceptions

Tentative de s'abonner à cet événement sur une transaction qui a été supprimée.

Exemples

L’exemple suivant montre comment une application peut obtenir le résultat d’une transaction en s’abonnant à l’événement TransactionCompleted .

C#
static void Main(string[] args)
{
    try
    {
        //Create the transaction scope
        using (TransactionScope scope = new TransactionScope())
        {
            //Register for the transaction completed event for the current transaction
            Transaction.Current.TransactionCompleted += new TransactionCompletedEventHandler(Current_TransactionCompleted);

            //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'))
                {
                    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;
    }
}

//Transaction completed event handler
static void Current_TransactionCompleted(object sender, TransactionEventArgs e)
{
    Console.WriteLine("A transaction has completed:");
    Console.WriteLine("ID:             {0}", e.Transaction.TransactionInformation.LocalIdentifier);
    Console.WriteLine("Distributed ID: {0}", e.Transaction.TransactionInformation.DistributedIdentifier);
    Console.WriteLine("Status:         {0}", e.Transaction.TransactionInformation.Status);
    Console.WriteLine("IsolationLevel: {0}", e.Transaction.IsolationLevel);
}

Remarques

Vous pouvez vous inscrire à cet événement au lieu d’utiliser un enrôlement volatile pour obtenir des informations sur les résultats des transactions. Le paramètre passé au TransactionCompletedEventHandler délégué est un Transaction instance. Vous pouvez ensuite interroger la TransactionInformation propriété du instance spécifique pour obtenir une instance de TransactionInformation, dont Status la propriété contient le status d’une transaction avec la Committed valeur ouAborted.

Attention L’inscription à cet événement affecte négativement les performances de la transaction à laquelle il est attaché.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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, 4.8.1
.NET Standard 2.0, 2.1