1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| /// <summary>
/// Gets a the current thread's transaction manager
/// </summary>
/// <returns>The current thread's <see cref="TransactionManager"/></returns>
public static TransactionManager ThreadTransactionMgr()
{
TransactionManager txMgr = null;
object obj = Thread.GetData(txMgrSlot);
if (!(obj == null))
{
txMgr = ((TransactionManager)(obj));
}
else
{
txMgr = new TransactionManager();
Thread.SetData(txMgrSlot, txMgr);
}
return txMgr;
}
/// <summary>
/// Performs a complete reset of the thread's transaction, so that new database operations can be successful
/// </summary>
public static void ThreadTransactionMgrReset()
{
TransactionManager txMgr = TransactionManager.ThreadTransactionMgr();
try
{
if (((txMgr.txCount > 0)
&& (txMgr.hasRolledBack == false)))
{
txMgr.RollbackTransaction();
}
}
catch
{
// At this point we're not worried about a failure
}
Thread.SetData(txMgrSlot, null);
} |
Partager