我看过这样的帖子:Is it OK to use static variables to cache information in ASP.net?。
我试图了解静态变量的可见性。有一个ASP.NET进程(W3WP) - 我意识到Web园区存在,但在我的场景中有一个 - 多个客户端可以连接。如果其中一个客户端将静态(共享)整数设置为10,那么所有Web客户端都会将共享变量视为10吗?我试图了解共享变量是否类似于应用程序设置或会话设置。
这是否也适用于VB.NET(客户端应用程序)。我读过一篇文章,讨论允许多个VB.NET客户端使用单个应用程序域。是否在具有单个应用程序域的所有客户端之间共享静态变量?
答案 0 :(得分:3)
静态/共享变量是per-AppDomain,因此是该AppDomain的所有客户端都将看到相同的值。它与应用程序设置大致相当,是的。
(警告:除非该字段标记为[ThreadStatic]
,但在Web应用程序中这是一个真的坏主意。)
您应该非常谨慎使用静态/共享字段,尤其是在线程环境中。除了用户/会话之间的状态不正确之外,它们还存在固有的线程安全问题,您通常需要仔细同步对非常的访问。例如,如果多个线程可以同时添加/删除/ etc,则静态List<T>
将会非常危险。