我想将我的自定义域对象链接到 Petrel 空闲内存命令。我的域对象在可视化时缓存数据,并且当用户想要释放内存时可以清除此缓存。
我找到了 IMemorySaver 接口并尝试在我的自定义域对象上声明它,但是当用户选择释放 Petrel 中的内存时,不会调用 FreeMemory 方法。
有任何想法吗?
尼尔
在 Ocean 2013.1 中引入了一个新的 API,它允许在用户调用“空闲内存”功能时告知自定义域对象和来自插件的 ToggleWindows(这也适用于对 PetrelSystem.ForceFreeMemory() 的编程调用) .
该 API 遵循与现有 INameInfoFactory 和 IImageInfoFactory API 类似的模式。
为了使用 API,您需要为实现新 IResourceSaverFactory 接口的自定义域对象(或 ToggleWindow)创建工厂对象。
此接口要求您实现一个名为 GetResourceSaver() 的方法。此方法将返回与您的自定义域对象(或 ToggleWindow)关联的 ResourceSaver 对象。
ResourceSaver 是一个抽象类,您应该在派生类上实现 FreeResources() 方法。
当调用“空闲内存”功能时,系统将使用您的 ResourceSaverFactory 为您的每个自定义域对象(或 ToggleWindow)实例获取 ResourceSaver 对象。
FreeResources() 方法将在您的 ResouceSaver 对象上调用。
问候,
奇皮
Neal,IMemorySaver 被声明为一个服务接口,你不应该重新实现它。
话虽如此,参与 Petrel 的受控资源管理是一个公平的要求。