📄 program.cs
字号:
using System;
using System.Threading;
using System.Transactions;
namespace Wrox.ProCSharp.Transactions
{
class Program
{
static void Main()
{
try
{
using (TransactionScope scope = new TransactionScope())
{
Transaction.Current.TransactionCompleted += TransactionCompleted;
Utilities.DisplayTransactionInformation("Main thread TX", Transaction.Current.TransactionInformation);
// new Thread(ThreadMethod).Start(null);
new Thread(ThreadMethod).Start(Transaction.Current.DependentClone(DependentCloneOption.BlockCommitUntilComplete));
scope.Complete();
}
}
catch (TransactionAbortedException ex)
{
Console.WriteLine("Main - Transaction was aborted, {0}", ex.Message);
}
}
static void TransactionCompleted(object sender, TransactionEventArgs e)
{
Utilities.DisplayTransactionInformation("TX completed", e.Transaction.TransactionInformation);
}
static void ThreadMethod(object dependentTx)
{
DependentTransaction dTx = dependentTx as DependentTransaction;
try
{
Transaction.Current = dTx;
using (TransactionScope scope = new TransactionScope())
{
Transaction.Current.TransactionCompleted += TransactionCompleted;
Utilities.DisplayTransactionInformation("Thread TX", Transaction.Current.TransactionInformation);
scope.Complete();
}
}
catch (TransactionAbortedException ex)
{
Console.WriteLine("ThreadMethod - Transaction was aborted, {0}", ex.Message);
}
finally
{
if (dTx != null)
{
dTx.Complete();
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -