数据库撤消和事务管理设施
大多数 ObjectARX 应用程序不需要处理撤消和事务管理,但它们应该注意一些要点:
- 撤消和事务管理是按文档执行的。在AutoCAD中,它通过(或与文档锁定结合使用)进行控制。
- 每当文档被锁定为 或 时,都会将“开始命令”撤消括号写入文件,然后执行数据库和其他修改。当文档从 or 状态解锁时,将写入相应的“结束命令”撤消括号。(请注意,这些可以嵌套。当应用程序完成对文档的操作时,它应该已经平衡了其文档锁定和解锁请求。如果请求未平衡,则撤消文件将无法正常工作,从而使操作在第一个写入锁定之后以及通过第一个锁定与解锁平衡不同步。后续的撤消请求应使其恢复同步。kWritekXWritekWritekXWrite
- 提供了用于建立命令名称的参数,该参数在执行 UNDO 命令时显示。创建的撤消标记与内置 AutoCAD 和 ObjectARX 命令的撤消标记相同,因此可以通过 UNDO GROUP 进行管理。
- 文档可以彼此独立执行撤消。
- 默认情况下,创建实例时,其撤消和事务管理与当前文档相关联。AcDbDatabase
- 请注意,有两种方法用于将数据库与文档的撤消工具和事务管理器挂钩:和 。如果您收到此类通知,请注意,此时数据库与任何文档之间的关联是未定义的,因此在回调中可能需要也可能不需要文档锁定。当然,撤消当时所做的任何修改的任何操作也将撤消数据库的创建。AcEditorReactordatabaseConstructed()databaseToBeDestroyed()databaseConstructed()
- 默认构造函数将查询对象的撤消控制器。AcDbDatabaseAcDbHostApplicationServices
|