【发布时间】:2010-10-27 23:59:51
【问题描述】:
假设您想在 ASP.NET Web 应用程序中的所有线程/会话之间共享一些资源,例如类或变量。什么比较好?
1) 具有对该静态变量的线程安全访问器的静态变量?
2) 还是 ASP.NET 应用程序会话变量?
【问题讨论】:
-
啊好吧...我没看到...那我应该怎么做才能结束这个问题呢?
标签: asp.net global-variables static-members
假设您想在 ASP.NET Web 应用程序中的所有线程/会话之间共享一些资源,例如类或变量。什么比较好?
1) 具有对该静态变量的线程安全访问器的静态变量?
2) 还是 ASP.NET 应用程序会话变量?
【问题讨论】:
标签: asp.net global-variables static-members
如果你只有其中一个,差别不大。
如果你有多个,你应该使用静态变量而不是Application 变量。 Application.Lock 方法将锁定所有 Application 变量,而您可以为静态变量使用单独的同步标识符,以便每个锁定只影响访问该特定变量的代码。
【讨论】:
静态成员会提供更好的性能,但缺点是它们不是线程安全的:
建议您将数据存储在应用程序类的静态成员中,而不是应用程序对象中。这提高了性能,因为您访问静态变量的速度比访问应用程序字典中的项目要快。
发件人:http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607
和:
【讨论】:
这是您浏览多个页面并收集数据的常见场景。对于这种情况,我会使用 Session 对象。当整个应用程序需要同一个对象时,应该使用静态变量。
如果您要保留的值取决于用户,请使用 Session。
【讨论】:
只有当你想存储整个会话的值时才应该使用真正的会话变量,但如果你希望变量被初始化并在表单之间使用,并且如果在 betwwen 中更改应该是在整个应用程序中可用的同一对象必须使用静态变量。
【讨论】: