非静的クラスの静的内部クラスのスコープについてはわかりません。ASP.NET内の静的内部クラスのスコープ
変数DataContextCreator.Instance(シングルトンパターンの一部)は、すべてのページオブジェクト/ページ要求の同じPDataContextインスタンスを指しますか、各オブジェクトは独自のインスタンスを持ちますか?
public class Page : System.Web.UI.Page
{
private class DataContextCreator
{
static DataContextCreator() { }
public static readonly PDataContext Instance = new PDataContext(TUtil.GetConnectionString());
}
public PDataContext DataContext
{
get
{
return DataContextCreator.Instance;
}
}
}
は、私は、これは所望の方法、すなわち無共有のDataContextに動作するためにHttpContext.Currentと連携する必要がありますか?もしそうなら、別の方法がありますか?
静的なクラスをプライベートに変更するかどうかはわかりません(私が行ったように)。
ありがとうございます!
EDIT: これは私のソリューションで、静的変数を持たずに同じ遅延ロード機能を持つようになりました。この場合、保持変数の周りにmutexロックを置く必要はないと思います。
private PDataContext _DataContext;
private PDataContext DataContext
{
get
{
if (this._DataContext == null)
{
this._DataContext = new PDataContext(TUtil.GetConnectionString());
}
return this._DataContext;
}
}
コードがページにある場合は、ロックの必要はありません。プロパティはページのローカルなので、1つのスレッドだけがそのページにアクセスします。 – Guffa