次は、大量のメモリを必要とする巨大なページモデルオブジェクトの弱い参照を保持しようとしているアプリケーションのサンプルコードです。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になる可能性があります。
このオブジェクトへの強い参照を作成できるようにする方法はありますか?そして、後でオブジェクトを処理すると弱い参照にすることができます。
私は弱い参照が強いものに変換されるが、逆もまた同様でない例をいくつか見てきました。