C#.NET Singleton应用程序池的生命周期

时间:2011-06-03 03:11:07

标签: c# asp.net singleton application-pool

我想使用HttpContent.Current.Cache创建一个在应用程序池的生命周期内保持活动状态的单例。

我在哪里创建课程,应该如何实施?我理解如何实现单例,但我不太熟悉线程和httpcontent.current.cache。

谢谢!

3 个答案:

答案 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++;