1

我想将我的自定义域对象链接到 Petrel 空闲内存命令。我的域对象在可视化时缓存数据,并且当用户想要释放内存时可以清除此缓存。

我找到了 IMemorySaver 接口并尝试在我的自定义域对象上声明它,但是当用户选择释放 Petrel 中的内存时,不会调用 FreeMemory 方法。

有任何想法吗?

尼尔

4

2 回答 2

1

在 Ocean 2013.1 中引入了一个新的 API,它允许在用户调用“空闲内存”功能时告知自定义域对象和来自插件的 ToggleWindows(这也适用于对 PetrelSystem.ForceFreeMemory() 的编程调用) .

该 API 遵循与现有 INameInfoFactory 和 IImageInfoFactory API 类似的模式。

为了使用 API,您需要为实现新 IResourceSaverFactory 接口的自定义域对象(或 ToggleWindow)创建工厂对象。

此接口要求您实现一个名为 GetResourceSaver() 的方法。此方法将返回与您的自定义域对象(或 ToggleWindow)关联的 ResourceSaver 对象。

ResourceSaver 是一个抽象类,您应该在派生类上实现 FreeResources() 方法。

当调用“空闲内存”功能时,系统将使用您的 ResourceSaverFactory 为您的每个自定义域对象(或 ToggleWindow)实例获取 ResourceSaver 对象。

FreeResources() 方法将在您的 ResouceSaver 对象上调用。

问候,

奇皮

于 2013-05-29T07:09:31.840 回答
0

Neal,IMemorySaver 被声明为一个服务接口,你不应该重新实现它。

话虽如此,参与 Petrel 的受控资源管理是一个公平的要求。

于 2012-07-27T14:06:33.553 回答