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();
}