有没有办法设置静态变量的生命周期 - 即:它在被重置之前保持活动状态多长时间?我希望可能有一个可以应用的属性。
问问题
6571 次
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 回答