提问人:Mahir 提问时间:10/27/2023 最后编辑:Brian Tompsett - 汤莱恩Mahir 更新时间:10/27/2023 访问量:34
Enterprise Architect通过C使用API时显示弹出窗口#
Enterprise Architect shows Pop-Up when using API through C#
问:
我正在使用企业架构师版本 15,并且我创建了一个文件扩展名为 .eapx 的基于文件的项目。我正在尝试通过API(使用C#语言)在Enterprise Architect中创建和更新新包,其层次结构如下:根模型/包/新包,并且在更新包时,我得到的基础模型已更改,这会冻结我的企业架构师以响应任何进一步的API调用。
以下是执行顺序(这里每个步骤都是一个单独的函数,它传递创建的 newPackage):
1. 首先创建一个名为“Demo”的包
Package newPackage = package.Packages.AddNew(EAConstants.OH_CREATE_TEMPLATE, "Package");
newPackage.Update();
2. 设置系统字段值。
Package package = (Package)newPackage;
package.Element.Status = "Approved"
package.Element.Stereotype = <Some Stereotype Value>;
package.Element.Update();
package.Update();
3. 设置标记值
Package pc = (Package)newPackage;
Element element = pc.Element;
set tag values for element
element.TaggedValues.Refresh();
element.Update();
4. 更新新包的名称
Package changePackage = (Package)newPackage
changePackage.Name = "NewName"
changePackage.Update();
5. 刷新包
Package package = (Package)newPackage
newPackage.Element.Refresh();
newPackage.Update();
尝试过的东西:
- 尝试在每个更新步骤后刷新所有模型。
- 已尝试在每个更新步骤之前刷新所有模型。
期望:
避免弹出显示警告消息,因为它会冻结我的企业应用程序以进行任何进一步的 API 调用(更合适的方法:避免使用抑制对话框方法进行包)。
答:
我很确定这种情况正在发生,因为所有多余的电话和电话。Update()
Refresh()
你真的不应该执行代码,除非你确定你需要它。
例子:
Package package = (Package)newPackage;
package.Element.Status = "Approved"
package.Element.Stereotype = <Some Stereotype Value>;
package.Element.Update();
package.Update();
没有必要最后一个,因为您没有对包对象进行任何更改,并且您已经保存了package.Update()
package.Element
Package pc = (Package)newPackage;
Element element = pc.Element;
set tag values for element
element.TaggedValues.Refresh();
element.Update();
此代码根本不执行任何操作(功能)。不需要 或Refresh()
element.Update()
Package package = (Package)newPackage
newPackage.Element.Refresh();
newPackage.Update();
同样,此代码根本不执行任何操作。
如果你把你的代码限制在你真正需要的东西上,你将有更好的机会避免这些烦人的弹出窗口。
还有一个延迟 GUI 更新的属性 () 和一个告诉 EA 某些内容已更改的方法 ()。如果所有其他方法都失败了,这些也可能有所帮助。Repository.EnableUIUpdates
Repository.AdviseElementChange (long ObjectID)
评论