DependentTransaction Klas

Definitie

Beschrijft een kloon van een transactie die garantie biedt dat de transactie niet kan worden doorgevoerd totdat de toepassing in rust komt met betrekking tot het werk aan de transactie. Deze klasse kan niet worden overgenomen.

public ref class DependentTransaction sealed : System::Transactions::Transaction
public sealed class DependentTransaction : System.Transactions.Transaction
[System.Serializable]
public sealed class DependentTransaction : System.Transactions.Transaction
type DependentTransaction = class
    inherit Transaction
[<System.Serializable>]
type DependentTransaction = class
    inherit Transaction
Public NotInheritable Class DependentTransaction
Inherits Transaction
Overname
DependentTransaction
Kenmerken

Voorbeelden

In het volgende voorbeeld ziet u hoe u een afhankelijke transactie maakt.

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();
}
Public Shared Sub Main()
    Try
        Using scope As TransactionScope = New TransactionScope()

            'Perform transactional work here.

            'Queue work item
            ThreadPool.QueueUserWorkItem(AddressOf 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
            Dim c As ConsoleKeyInfo
            While (True)

                Console.Write("Complete the transaction scope? [Y|N] ")
                c = Console.ReadKey()
                Console.WriteLine()
                If (c.KeyChar = "Y") Or (c.KeyChar = "y") Then
                    scope.Complete()
                    Exit While
                ElseIf ((c.KeyChar = "N") Or (c.KeyChar = "n")) Then
                    Exit While
                End If
            End While
        End Using

    Catch ex As TransactionException
        Console.WriteLine(ex)
    Catch
        Console.WriteLine("Cannot complete transaction")
        Throw
    End Try
End Sub

Public Shared Sub WorkerThread(ByVal myTransaction As Object)

    'Create a DependentTransaction from the object passed to the WorkerThread
    Dim dTx As DependentTransaction
    dTx = CType(myTransaction, DependentTransaction)

    '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 ts As TransactionScope = New TransactionScope(dTx)
        'Perform transactional work here.

        'Call complete on the transaction scope
        ts.Complete()
    End Using

    'Call complete on the dependent transaction
    dTx.Complete()
End Sub

Opmerkingen

Dit DependentTransaction is een kloon van een Transaction object dat is gemaakt met behulp van de DependentClone methode. Het enige doel is om de toepassing in rust te laten komen en te garanderen dat de transactie niet kan worden doorgevoerd terwijl het werk nog steeds wordt uitgevoerd op de transactie (bijvoorbeeld op een werkrolthread).

Wanneer het werk dat binnen de gekloonde transactie is voltooid en klaar is om te worden doorgevoerd, kan deze de maker van de transactie informeren met behulp van de Complete methode. Zo kunt u de consistentie en juistheid van gegevens behouden.

De DependentCloneOption opsomming wordt gebruikt om het gedrag van doorvoering te bepalen. Met dit gedragsbeheer kan een toepassing in rust komen en kan gelijktijdigheid worden ondersteund. Zie Gelijktijdigheid beheren met DependentTransaction voor meer informatie over hoe deze opsomming wordt gebruikt.

Eigenschappen

Name Description
IsolationLevel

Hiermee haalt u het isolatieniveau van de transactie op.

(Overgenomen van Transaction)
PromoterType

Identificeer de indeling van de byte[] geretourneerde door de methode Niveau verhogen wanneer de transactie wordt gepromoveerd.

(Overgenomen van Transaction)
TransactionInformation

Hiermee haalt u aanvullende informatie over een transactie op.

(Overgenomen van Transaction)

Methoden

Name Description
Clone()

Hiermee maakt u een kloon van de transactie.

(Overgenomen van Transaction)
Complete()

Pogingen om de afhankelijke transactie te voltooien.

DependentClone(DependentCloneOption)

Hiermee maakt u een afhankelijke kloon van de transactie.

(Overgenomen van Transaction)
Dispose()

Publiceert de resources die door het object worden bewaard.

(Overgenomen van Transaction)
EnlistDurable(Guid, IEnlistmentNotification, EnlistmentOptions)

Hiermee wordt een duurzame resourcemanager opgenomen die ondersteuning biedt voor twee fasen om deel te nemen aan een transactie.

(Overgenomen van Transaction)
EnlistDurable(Guid, ISinglePhaseNotification, EnlistmentOptions)

Neemt een duurzame resourcemanager op die ondersteuning biedt voor optimalisatie van één fase voor doorvoeren om deel te nemen aan een transactie.

(Overgenomen van Transaction)
EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid)

Hiermee schakelt u een resourcemanager in die een interne transactie heeft met behulp van een promotable single phase enlistment (PSPE).

(Overgenomen van Transaction)
EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification)

Hiermee schakelt u een resourcemanager in die een interne transactie heeft met behulp van een promotable single phase enlistment (PSPE).

(Overgenomen van Transaction)
EnlistVolatile(IEnlistmentNotification, EnlistmentOptions)

Hiermee wordt een vluchtige resourcemanager opgenomen die ondersteuning biedt voor twee fasen om deel te nemen aan een transactie.

(Overgenomen van Transaction)
EnlistVolatile(ISinglePhaseNotification, EnlistmentOptions)

Neemt een vluchtige resourcemanager op die ondersteuning biedt voor optimalisatie van één fase voor doorvoeren om deel te nemen aan een transactie.

(Overgenomen van Transaction)
Equals(Object)

Bepaalt of deze transactie en het opgegeven object gelijk zijn.

(Overgenomen van Transaction)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Transaction)
GetPromotedToken()

Hiermee haalt u de byte[] geretourneerde Promote methode op wanneer de transactie wordt gepromoveerd.

(Overgenomen van Transaction)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
PromoteAndEnlistDurable(Guid, IPromotableSinglePhaseNotification, ISinglePhaseNotification, EnlistmentOptions)

Bevordert en neemt een duurzame resourcemanager op die ondersteuning biedt voor twee fasen om deel te nemen aan een transactie.

(Overgenomen van Transaction)
Rollback()

Hiermee wordt de transactie teruggedraaid (afgebroken).

(Overgenomen van Transaction)
Rollback(Exception)

Hiermee wordt de transactie teruggedraaid (afgebroken).

(Overgenomen van Transaction)
SetDistributedTransactionIdentifier(IPromotableSinglePhaseNotification, Guid)

Hiermee stelt u de gedistribueerde transactie-id in die is gegenereerd door de niet-MSDTC-organisator.

(Overgenomen van Transaction)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

gebeurtenis

Name Description
TransactionCompleted

Geeft aan dat de transactie is voltooid.

(Overgenomen van Transaction)

Expliciete interface-implementaties

Name Description
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Haalt een SerializationInfo op met de gegevens die nodig zijn om deze transactie te serialiseren.

(Overgenomen van Transaction)

Van toepassing op

Veiligheid thread

Dit type is thread veilig.

Zie ook