0

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

4

4 回答 4

9

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

于 2012-07-09T12:05:00.757 回答
3

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

于 2012-07-09T11:44:26.623 回答
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;
        }
    }
于 2012-07-10T12:54:36.317 回答
0

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

如果这是用于缓存之类的东西,我建议设置一个计时器以定期更新该值。

于 2012-07-09T11:35:22.393 回答