我想將我的自定義域對象鏈接到Petrel free memory命令。我的域對象在可視化時緩存數據,並且當用戶想要釋放內存時可以清除此緩存。如何向Ocean聲明我的自定義域對象可以釋放內存?
我已經找到了IMemorySaver接口,並試圖宣稱這是我的自定義域對象,但是當用戶選擇在Petrel的可用內存FreeMemory方法不叫。
任何想法?
尼爾
我想將我的自定義域對象鏈接到Petrel free memory命令。我的域對象在可視化時緩存數據,並且當用戶想要釋放內存時可以清除此緩存。如何向Ocean聲明我的自定義域對象可以釋放內存?
我已經找到了IMemorySaver接口,並試圖宣稱這是我的自定義域對象,但是當用戶選擇在Petrel的可用內存FreeMemory方法不叫。
任何想法?
尼爾
在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 對象調用。
問候,
副井
尼爾,該IMemorySaver被聲明爲一個服務接口,你不應該重新實現。
話雖如此,參與Petrel的受控資源管理是一個公平的要求。
謝謝,我會提交通過此功能支持海洋的請求。 – 2012-07-30 05:50:44
此功能已按照我以前的答案中的說明實施 - 您應該使用IResourceSaverFactory/Source。 – Chippy 2013-09-02 12:21:44