キャッシュオブジェクトを使用してXMLDocumentオブジェクトを保持していました。 は、具体的には、コードは次のとおりです。ほとんど読み取り専用のオブジェクトを持つASP.NETスレッドセーフキャッシュオブジェクトの使用
XmlDocument xDoc = new XmlDocument();
if (HttpRuntime.Cache.Get("AuthorizationXML") == null)
{
string file = GetAuthorizationXmlFilePath();
xDoc.Load(file);
HttpRuntime.Cache.Insert("AuthorizationXML", xDoc, new CacheDependency(file));
}
else
{
xDoc = (XmlDocument)HttpRuntime.Cache.Get("AuthorizationXML");
}
return xDoc;
はとにかく、私のチームリーダーは、キャッシュオブジェクトがスレッドセーフであるので、それは廃棄物がほとんど読み取り専用オブジェクトのためにそれを使用することになり、実装する方がよいだろうことを示唆しアプリケーションオブジェクト上のシングルトンフリースレッドオブジェクトとしてのキャッシュオブジェクト。 この文は正当なものですか? スレッドセーフとは、キャッシュオブジェクトがロックで実装されていることを意味します。 キャッシュから読み込むだけでロックが適用されますか? コメントありがとうございます。
コードに競合があります。最初にチェックしたときにキャッシュアイテムがnullでない可能性があります。つまり、アイテムがキャッシュから消えてしまったときに、 'else'節に移動します。 – LukeH
ありがとうございますが、私はnullに変更することを期待していません、それは一度読み込まれ、コードはnullに設定されていません。 – Tomer