【问题标题】:What is the life span of a field in a static class?静态类中字段的生命周期是多少?
【发布时间】:2011-02-02 19:40:03
【问题描述】:

我有一个简单的 Web 服务,其中我有一个静态类,它有一个静态集合来记住活动令牌。

我只想确保令牌集合一直存在到下一次 iisreset 或应用程序池回收。

那么在Application bag和static class中记住状态有什么区别呢?

谢谢,

【问题讨论】:

    标签: c# asp.net garbage-collection


    【解决方案1】:

    微软 (says):

    ASP.NET 包含应用程序状态,主要是为了与经典 ASP 兼容,以便更容易将现有应用程序迁移到 ASP.NET。建议您将数据存储在应用程序类的静态成员中,而不是应用程序对象中。这提高了性能,因为您访问静态变量的速度比访问应用程序字典中的项目要快。

    所以,使用静态变量。并且不要忘记使用lock

    【讨论】:

    • 哇,这是我第一次听说。我原以为情况正好相反(更喜欢应用程序,因为它更容易而且可能足够快)
    • @greg, @gor:这对我来说也是新闻。我希望在这里看到更多的反应。
    • 有什么比访问静态变量更快?
    • 好吧,显然您无论如何都必须手动锁定 Application 对象,所以是的,您不妨使用staticmsdn.microsoft.com/en-us/library/94xkskdf%28v=VS.85%29.aspx
    【解决方案2】:

    您的静态成员不会扩展到超过 1 个服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多