zoukankan      html  css  js  c++  java
  • C# Transaction 事务处理 -依赖事务

     在DependentTransaction()方法中,实例化CommittableTransaction类,创建一个根事务,显示事务的信息。接着, tx.DependentClone()方法创建一个依赖的事务。把这个依赖事务传递给TxTask()方法,它定义为新任务的入口。

     1 static void DependentTransaction()
     2         {
     3             var tx = new CommittableTransaction();
     4             Utilities.DisplayTransactionInformation("Root TX created",
     5                   tx.TransactionInformation);
     6 
     7             try
     8             {
     9                 Task.Factory.StartNew(TxTask, tx.DependentClone(DependentCloneOption.BlockCommitUntilComplete));
    10 
    11                 if (Utilities.AbortTx())
    12                 {
    13                     throw new ApplicationException("transaction abort");
    14                 }
    15 
    16                 tx.Commit();
    17             }
    18             catch (Exception ex)
    19             {
    20                 Console.WriteLine(ex.Message);
    21                 tx.Rollback();
    22             }
    23 
    24             Utilities.DisplayTransactionInformation("TX finished",
    25                   tx.TransactionInformation);
    26 
    27         }
    28 
    29         static void TxTask(object obj)
    30         {
    31             var tx = obj as DependentTransaction;
    32             Utilities.DisplayTransactionInformation("Dependent Transaction",
    33                   tx.TransactionInformation);
    34 
    35             Thread.Sleep(3000);
    36 
    37             tx.Complete();
    38 
    39             Utilities.DisplayTransactionInformation("Dependent TX Complete",
    40                   tx.TransactionInformation);
    41         }
    42 
    43    public static class Utilities
    44     {
    45        public static void DisplayTransactionInformation(string title, TransactionInformation ti)
    46        {
    47            Contract.Requires<ArgumentNullException>(ti != null);
    48 
    49            Console.WriteLine(title);
    50            Console.WriteLine("Creation Time: {0:T}", ti.CreationTime);
    51            Console.WriteLine("Status: {0}", ti.Status);
    52            Console.WriteLine("Local ID: {0}", ti.LocalIdentifier);
    53            Console.WriteLine("Distributed ID: {0}", ti.DistributedIdentifier);
    54            Console.WriteLine();
    55        }
    56     }
  • 相关阅读:
    如何编译Linux内核
    linux启动过程
    linux ifconfig
    Android 4.0 x86安装教程 附带联网参数详细设置
    linux ntfs模块
    Java 入门进阶
    深入理解Java中的String
    Java中字符串string的数据类型
    IDEA设置JVM运行参数
    Java11实战:模块化的 Netty RPC 服务项目
  • 原文地址:https://www.cnblogs.com/farmer-y/p/6109638.html
Copyright © 2011-2022 走看看