快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

乐虎国际手机客户端app:如何让普通变量也支持事务回滚?



有一次和人谈起关于事务的话题,谈到如何的资本才能事务型资本。除了我们常常应用的数据库、消息行列步队、事务型文件系统(TxF)以及事务性注册表(TxR)等,还有那些资本直接可以纳入事务进行状态的治理呢?我说假如我们按照.NET事务模型的规范对响应的资本进行合理的封装,原则上我们可以让任何可编程的资本成为事务型资本。本篇文章中,我将经由过程简单的编程将一个通俗的乐虎国际手机客户端app变量变成支持事务,让变量的值也可以回滚,以确保事务前后的数据同等性。

一、什么是事务型的变量

本文中所说的事务型变量指的是这样的变量:

在事务开始前,变量的初始值会被保存;

在事务中对变量的赋值只有在事务被成功提交后才会真正赋值给变量;

假如事务中止导致回滚,变量的值乐虎国际手机客户端app将会规复到事务开始之前的状态。

上面的对事务型变量的描述可以经由过程下面的法度榜样来表现:变量v在初始化时被赋值为1。然后经由过程TransactionScope开始一个事务,并将变量纳入该事务之中。在事务范围内将值赋乐虎国际手机客户端app值为2,然后调用DoSomething措施,并提交事务。假如DoSomething履行历程中抛出非常,全部事务将会回滚。当全部事务中止回滚后,变量v的值回覆到事务开始之前的状态,即值为1。

1: static vo乐虎国际手机客户端appid Main(string[] args)

2: {

3:TransactionalVariableint> v = new TransactionalVariableint>(1);

4:try乐虎国际手机客户端app

5:{

6:using (TransactionScope transactionScope = new TransactionScope())

7:{

8:Transaction.Current.EnlistPromotableSinglePhase(v);

9:v.Value = 2;

10:DoSomething();

11:transactionScope.Complete();

12:}

13:}

14:catch

15:{ }

16:Debug.Assert(v.Value == 1);

17: }

您可能还会对下面的文章感兴趣: