我想使用HttpContent.Current.Cache创建一个在应用程序池的生命周期内保持活动状态的单例。
我在哪里创建课程,应该如何实施?我理解如何实现单例,但我不太熟悉线程和httpcontent.current.cache。
谢谢!
答案 0 :(得分:1)
将单例代码放在何处无关紧要。
只要您访问instance
并且类型已初始化,它就会在ApplicationDomain
的整个生命周期内保留在内存中。因此,将它作为普通类使用,其余部分在首次使用时完成。
答案 1 :(得分:0)
我不会为此使用缓存。我建议使用带有静态getInstance()的静态类或单例。
答案 2 :(得分:0)
也许你的问题过于复杂了?我不确定你为什么需要使用缓存。你能不能只是在App_Code文件夹中添加一个文件来存放你的类,例如“mSingleton.cs”
public sealed class mSingleton
{
static readonly mSingleton _instance = new mSingleton();
public int MyVal { get; set; }
public static mSingleton Instance
{
get { return _instance; }
}
private mSingleton()
{
// Initialize members, etc. here.
}
}
然后它是全局的所有代码和页面,维护状态,直到应用程序池回收或有应用程序重建(我不知道这是否导致应用程序也回收 - 如果它确实那么它适合你的无论如何),不需要添加到任何缓存,应用程序或会话变量..没有杂乱的处理
您可以在任何aspx.cs文件中的page_load上执行此操作并刷新它以查看每次计数上升以证明状态得以维持:
mSingleton getMyObj = mSingleton.Instance;
getMyObj.MyVal++;