以下是我們應用程序的示例代碼,其中我們試圖保留大型頁面模型對象的弱引用,這會佔用大量內存。從Weakreference創建強引用
Dictionary<int,WeakReference> modelCache;
IPageModel ReadPageModel()
{
IPageModel page;
if (!modelCache.ContainsKey(cacheKey) || !modelCache[cacheKey].IsAlive)
{
model = new PageModel();
modelCache[cacheKey] = new WeakReference(Model);
}
else
{
model = modelCache[cacheKey].Target as IPageModel;
}
return model;
}
我們返回的模型(在其他部分)是對弱對象的引用,因此它可以在以後的時間爲null。
有沒有辦法,這樣我們就可以爲這個對象創建一個強有力的引用,然後當我們完成這個對象時,我們可以使它成爲一個弱引用。
我遇到了一些弱引用轉換爲強轉換的例子,反之亦然。