前页 后页

技巧和陷阱

注意事项

项目

详情

也可以看看

Visual Basic 5/6用户注意

Visual Basic 5/6用户应注意, Enterprise Architect界面的版本号以类似于以下形式的形式存储在VBP项目文件中:

参考= * \ G {64FB2BF4-9EFA-11D2-8307-C45586000000}#2.2#0#.. \ .. \ .. \ .. \ Program Files \ Sparx Systems \ EA \ EA.TLB#Enterprise Architect对象模型2.02

如果您从一个版本的Enterprise Architect迁移到另一个版本时遇到问题,请在文本编辑器中打开VBP文件并删除此行。然后在Visual Basic中打开项目,并使用Project-References创建对Enterprise Architect对象模型的新引用。

Add-In无法加载

从Enterprise Architect 7.0版开始,不再支持2004年之前创建的Add-Ins 。如果Add-In订阅Addn_Tmpl.tlb接口(2003样式),则它将在加载时失败。在这种情况下,请与Add-In的供应商或作者联系并请求升级。

持有州信息

Add-In可以保存状态信息,这意味着可以响应一个事件将数据存储在成员变量中,而在另一个事件中进行检索。这样做有一些危险:

  • Enterprise Architect自动化对象不会根据用户活动,其他工作站上的活动甚至同一自动化客户端中其他对象的操作进行更新。在调用之间保留此类对象的句柄可能导致第二个事件查询与Enterprise Architect当前状态没有关系的对象
  • 当您关闭Enterprise Architect ,将要求关闭所有Add-Ins ,请关闭它。如果有任何外部自动化客户端, Enterprise Architect必须保持活动状态,在这种情况下, Add-Ins重新加载所有加载项,从而丢失所有数据
  • 如果Add-In仍保留对其的引用,则充当自动化客户端的Enterprise Architect不会关闭(释放Disconnect()事件中的所有引用可避免此问题)
建议除非有特殊原因,否则Add-In应使用存储库参数及其方法和属性来提供必要的数据。

Enterprise Architect未关闭

.NET特定问题

自动化会检查对象的使用情况,并且直到不再使用它们之前,都不允许销毁任何对象。

自动化接口主题中所述,如果您的自动化控制器是使用.NET框架编写的,则即使在释放对它的所有引用之后, Enterprise Architect也不会关闭。要强制释放COM指针,请调用内存管理函数,如下所示:

GC.Collect();

GC.WaitForPendingFinalizers();

此外,由于自动化客户端挂接到Enterprise Architect ,而后者又创建了Add-Ins ,又又挂回到Enterprise Architect ,因此有可能陷入僵局,在这种情况下, Enterprise Architect和Add-Ins不会彼此放开并保持联系。彼此活跃。 Add-In可能会保留对Enterprise Architect因为:

  • 它保留对Enterprise Architect对象的私有引用(请参见前面的Holding State Information ),或者
  • 它是由.NET创建的,并且GC机制尚未发布它
需要采取两种措施来避免出现死锁情况:
  • 自动化控制器必须在某个时刻(可能在处理结束时)调用Repository.CloseAddins()
  • Add-Ins必须在Disconnect()事件中释放对Enterprise Architect所有引用;有关详细信息,请参见Add-In事件主题。
自动化客户端可能会控制Enterprise Architect的运行实例,而该Add-Ins没有遵守规则。在这种情况下,您可以调用Repository.Exit()终止Enterprise Architect 。

使用.NET框架开发Add-Ins ,必须在项目属性中选择COM互操作性,以便将其识别为Add-In 。

某些开发环境在创建时不会自动注册COM DLL。在Enterprise Architect识别Add-In之前,您可能必须手动执行此操作。

您可以使用私有Add-In密钥( Add-In部署所需)来存储与您的Add-In相关的配置信息。

范例和提示 技巧和陷阱 Add-In事件

并发通话

在Enterprise Architect 7.0之前的版本中,如果Add-In调用,则Enterprise Architect可能同时调用两个Add-In方法:

  • 留言框
  • 模态对话框
  • VB DoEvents,.NET应用程序DoEvents或其他语言的等效语言
在这种情况下, Enterprise Architect可以在第一个返回(重新输入)之前启动第二个Add-In方法。在7.0版中。及其后续版本, Enterprise Architect无法进行此类并发调用。

如果开发Add-Ins ,确保Add-In用户正在运行Enterprise Architect 7.0版或更新版本,以避免并发方法调用的任何风险。