private void ExecuteInTransaction(MgaProject project, Action doWork) { if (project == null || doWork == null) { throw new ArgumentNullException(); } var terr = project.BeginTransactionInNewTerr(transactiontype_enum.TRANSACTION_NON_NESTED); try { doWork(); project.CommitTransaction(); project.FlushUndoQueue(); } catch (Exception) { try { project.AbortTransaction(); } catch { } throw; } }
private void ExecuteInTransaction(MgaProject project, Action doWork, bool abort = false, transactiontype_enum type = transactiontype_enum.TRANSACTION_NON_NESTED) { if (project == null || doWork == null) { throw new ArgumentNullException(); } bool inTx = (project.ProjectStatus & 8) != 0; if (inTx) { doWork(); return; } project.BeginTransactionInNewTerr(type); try { doWork(); if (abort) { project.AbortTransaction(); } else { project.CommitTransaction(); } project.FlushUndoQueue(); } catch (Exception) { try { project.AbortTransaction(); } catch { } throw; } }