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     }

 

转载于:https://www.cnblogs.com/farmer-y/p/6109638.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值