假设您想在 ASP.NET Web 应用程序中的所有线程/会话之间共享一些资源,例如类或变量。什么是更好的?
1) 具有对该静态变量的线程安全访问器的静态变量?
2) 还是 ASP.NET 应用程序会话变量?
假设您想在 ASP.NET Web 应用程序中的所有线程/会话之间共享一些资源,例如类或变量。什么是更好的?
1) 具有对该静态变量的线程安全访问器的静态变量?
2) 还是 ASP.NET 应用程序会话变量?
如果您只有其中一个,则几乎没有区别。
如果你有多个,你应该使用静态变量而不是Application
变量。该Application.Lock
方法将锁定所有 Application
变量,而您可以为静态变量使用单独的同步标识符,以便每个锁定只影响访问该特定变量的代码。
静态成员将提供更好的性能,但缺点是它们不是线程安全的:
建议您将数据存储在应用程序类的静态成员中,而不是应用程序对象中。这提高了性能,因为您可以比访问应用程序字典中的项目更快地访问静态变量。
来自: http: //support.microsoft.com/default.aspx ?scid=kb;en-us;Q312607
和:
这是您浏览多个页面并收集数据的常见场景。对于这种情况,我会使用 Session 对象。当整个应用程序需要同一个对象时,应该使用静态变量。
如果您要保留的值取决于用户,则使用 Session。
这是真的会话变量应该只用于如果你想存储整个会话的值,但在你希望变量被初始化并在表单之间使用的情况下,如果在 betwwen 中更改应该可以通过同一对象的整个应用程序必须使用静态变量。