public static TResult InvokeSub <TResult>(this Document doc, Func <SubTransaction, TResult> func) { using (var tr = new SubTransaction(doc)) { tr.Start(); var result = func(tr); var status = tr.GetStatus(); switch (status) { case TransactionStatus.Started: tr.Commit(); return(result); case TransactionStatus.Committed: case TransactionStatus.RolledBack: return(result); case TransactionStatus.Error: tr.RollBack(); return(result); default: return(result); } } }
public static void InvokeSub(this Document doc, Action <SubTransaction> action) { using (var tr = new SubTransaction(doc)) { tr.Start(); action(tr); var status = tr.GetStatus(); switch (status) { case TransactionStatus.Started: tr.Commit(); return; case TransactionStatus.Committed: case TransactionStatus.RolledBack: break; case TransactionStatus.Error: tr.RollBack(); return; default: return; } } }
public TransactionStatus GetStatus() { if (transaction is object) { return(transaction.GetStatus()); } if (subTransaction is object) { return(subTransaction.GetStatus()); } return(TransactionStatus.Uninitialized); }
public static void SuntranInvoke(this Document doc, Action <SubTransaction> action) { using (SubTransaction subTransaction = new SubTransaction(doc)) { subTransaction.Start(); action(subTransaction); bool flag = subTransaction.GetStatus() == (TransactionStatus)1; if (flag) { subTransaction.Commit(); } } }