System.Lazyクラスは、オブジェクトの生成に時間がかかる場合などに、必要になった時点で生成を行い、以後生成済みのオブジェクトを使うという機能をスレッドセーフで提供するものです。
今回はそれに弱参照を使って、生成後不要になったら一旦メモリから解放する機能を追加してみました。

ソースコードを以下に置いておきます。
これを使うにはWeakRef<T>クラスが必要なので、一緒に使ってください。
名前空間は変更して頂いて構いません。

https://www.myqnapcloud.com/smartshare/68704567o61n820u6428z5z3_6IiLTtA