İngilizce dilinde oku

Aracılığıyla paylaş


DependentCloneOption Sabit listesi

Tanım

Ne tür bağımlı işlem oluşturulacağını denetler.

C#
public enum DependentCloneOption
Devralma
DependentCloneOption

Alanlar

BlockCommitUntilComplete 0

Bağımlı işlem, üst işlem zaman aşımına uyana veya Complete() çağrılana kadar işlemin işleme işlemini engeller. Bu durumda işlem üzerinde ek iş yapılabilir ve yeni listeler oluşturulabilir.

RollbackIfNotComplete 1

Üst işlem çağrılmadan önce Complete() Commit çağrılırsa bağımlı işlem işlemi otomatik olarak durdurur.

Örnekler

Aşağıdaki örnekte bağımlı bir işlemin nasıl oluşturulacağı gösterilmektedir.

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

Açıklamalar

Bağımlı bir işlem yöntemi kullanılarak DependentClone elde edilebilir ve DependentCloneOption parametresi ne tür bağımlı işlemin oluşturulacağını denetler. Bu numaralandırmanın nasıl kullanıldığı hakkında daha fazla bilgi için bkz. DependentTransaction ile Eşzamanlılığı Yönetme.

Şunlara uygulanır

Ürün Sürümler
.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

Ayrıca bkz.