2012-07-27 58 views
1

我想將我的自定義域對象鏈接到Petrel free memory命令。我的域對象在可視化時緩存數據,並且當用戶想要釋放內存時可以清除此緩存。如何向Ocean聲明我的自定義域對象可以釋放內存?

我已經找到了IMemorySaver接口,並試圖宣稱這是我的自定義域對象,但是當用戶選擇在Petrel的可用內存FreeMemory方法不叫。

任何想法?

尼爾

回答

1

在Ocean 2013.1中引入了一個新API,它允許在用戶調用'Free memory'特性時告知插件的自定義域對象和ToggleWindows(這也可用於對PetrelSystem進行編程調用。 ForceFreeMemory())。

該API遵循類似的模式對現有INameInfoFactory和IImageInfoFactory的API。

爲了使用實現新IResourceSaverFactory界面,您需要爲您的自定義域對象(或ToggleWindow)工廠對象的API。

此接口要求您實現一個名爲GetResourceSaver()的方法。這個 方法將返回與您的自定義域對象(或ToggleWindow)關聯的ResourceSaver對象。

ResourceSaver是一個抽象類,你應該實現FreeResources上派生類()方法。

當「免費記憶」功能被調用的系統將使用您的ResourceSaverFactory獲得ResourceSaver對象爲每個自定義域對象(或ToggleWindow)實例。

的FreeResources()方法,將您的ResouceSaver 對象調用。

問候,

副井

0

尼爾,該IMemorySaver被聲明爲一個服務接口,你不應該重新實現。

話雖如此,參與Petrel的受控資源管理是一個公平的要求。

+0

謝謝,我會提交通過此功能支持海洋的請求。 – 2012-07-30 05:50:44

+0

此功能已按照我以前的答案中的說明實施 - 您應該使用IResourceSaverFactory/Source。 – Chippy 2013-09-02 12:21:44