静态变量的生命周期

时间:2012-07-09 11:32:55

标签: c# asp.net .net wpf static-members

有没有办法设置静态变量的生命周期 - 即:在重置之前它保持活动多长时间?我希望可能有一个属性可以应用。

4 个答案:

答案 0 :(得分:7)

静态变量中值的生命周期与包含AppDomain的值相同。 IE浏览器。如果您获得新的AppDomain(因为您的IIS应用程序重新启动),您将获得静态变量的新副本。

答案 1 :(得分:3)

静态成员与类型本身相关联,而不与类型的实例相关联。因此,它们的生命周期仅限于其创建的时间和顺序,并且它们不会被类型的实例“重置”。

答案 2 :(得分:1)

就我而言,当我使用ASP.NET时,有问题的项目应该在一个请求的生命周期中保持“实时”,因此在考虑它之后,HttpContext [“Items”]集合将是最佳的。例如,如果:

    private static SomeObject _books;
    protected static SomeObject Books
    {
        get
        {
            if (_books == null) {
                _books = new SomeObject();
            }
            return _books ;
        }
    }

    protected static SomeObject AVariable
    {
        get
        {
            SomeObject books = HttpContext.Current.Items["books"] as SomeObject; 
            if (books == null) {
                books = new SomeObject();
                HttpContext.Current.Items["books"] = books;
            }
            return books;
        }
    }

答案 3 :(得分:0)

静态变量保存在应用程序的生命周期中,并在所有线程之间共享。它仅在应用程序重新启动时重置(例如,web.config更改)。

如果这是用于缓存的话,我建议设置一个定时器来定期更新值。