有没有办法设置静态变量的生命周期 - 即:在重置之前它保持活动多长时间?我希望可能有一个属性可以应用。
答案 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更改)。
如果这是用于缓存的话,我建议设置一个定时器来定期更新值。