Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Transaction.DependentClone-Methode

Erstellt einen abhängigen Klon der Transaktion.

Namespace: System.Transactions
Assembly: System.Transactions (in system.transactions.dll)

public DependentTransaction DependentClone (
	DependentCloneOption cloneOption
)
public DependentTransaction DependentClone (
	DependentCloneOption cloneOption
)
public function DependentClone (
	cloneOption : DependentCloneOption
) : DependentTransaction
Nicht zutreffend.

Parameter

cloneOption

Eine DependentCloneOption, die steuert, welche Art abhängige Transaktion erstellt wird.

Rückgabewert

Eine DependentTransaction, die den abhängigen Klon darstellt.

Eine abhängige Transaktion ist eine Transaktion, deren Ergebnis vom Ergebnis der Transaktion abhängt, von der sie geklont wurde.

Der cloneoption-Parameter steuert, welche Art abhängige Transaktion erstellt wird. Wenn mit BlockCommitUntilComplete eine abhängige Transaktion erstellt wird, blockiert diese den Commitvorgang der Transaktion bis zum Timeout der Transaktion oder bis Complete für die DependentTransaction aufgerufen wird. Wenn sie mit RollbackIfNotComplete erstellt wird, bricht diese automatisch die Transaktion ab, falls der Aufruf von Commit vor dem Aufruf von Complete für die DependentTransaction erfolgt.

Im folgenden Beispiel wird veranschaulicht, wie eine abhängige Transaktion erstellt wird.

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();
}

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 wird unter Windows Vista, Microsoft Windows XP SP2 und Windows Server 2003 SP1 unterstützt.

.NET Framework

Unterstützt in: 3.0, 2.0
Anzeigen: