Autodesk.Revit.DB.TransactionGroup 类表示一个事务组,可以用来对多个事务进行分组和管理。
public TransactionGroup(Document document, string name)
参数:
document:Document类型,表示当前事务组所属的文档。name:string类型,表示当前事务组的名称。public int Id { get; }
返回当前事务组的唯一标识符。
public TransactionStatus Status { get; }
返回当前事务组的状态,包括:
None:未开始。Started:已开始。Committed:已提交。RolledBack:已回滚。public void Start()
开始当前事务组。
public void Commit()
提交当前事务组中的所有事务。
public void RollBack()
回滚当前事务组中的所有事务。
public void Dispose()
释放当前事务组及其所有的事务对象。
使用 TransactionGroup 对象进行事务组的创建和管理:
// 创建一个事务组
TransactionGroup transGroup = new TransactionGroup(doc, "My Transaction Group");
// 手动管理事务组的开始和结束
try
{
    transGroup.Start();
    // 在事务组中分别创建两个事务
    using (Transaction trans1 = new Transaction(doc, "Transaction 1"))
    {
        try
        {
            trans1.Start();
            
            // 更新模型的代码...
            
            trans1.Commit();
        }
        catch (Exception ex)
        {
            trans1.RollBack();
            TaskDialog.Show("Error", ex.Message);
        }
    }
    using (Transaction trans2 = new Transaction(doc, "Transaction 2"))
    {
        try
        {
            trans2.Start();
            
            // 更新模型的代码...
            
            trans2.Commit();
        }
        catch (Exception ex)
        {
            trans2.RollBack();
            TaskDialog.Show("Error", ex.Message);
        }
    }
    // 提交事务组中所有的事务
    transGroup.Commit();
}
catch (Exception ex)
{
    transGroup.RollBack();
    TaskDialog.Show("Error", ex.Message);
}
finally
{
    transGroup.Dispose();
}