.net共享变量

时间:2012-07-23 08:37:13

标签: asp.net .net vb.net

我看过这样的帖子:Is it OK to use static variables to cache information in ASP.net?

我试图了解静态变量的可见性。有一个ASP.NET进程(W3WP) - 我意识到Web园区存在,但在我的场景中有一个 - 多个客户端可以连接。如果其中一个客户端将静态(共享)整数设置为10,那么所有Web客户端都会将共享变量视为10吗?我试图了解共享变量是否类似于应用程序设置或会话设置。

这是否也适用于VB.NET(客户端应用程序)。我读过一篇文章,讨论允许多个VB.NET客户端使用单个应用程序域。是否在具有单个应用程序域的所有客户端之间共享静态变量?

1 个答案:

答案 0 :(得分:3)

静态/共享变量是per-AppDomain,因此该AppDomain的所有客户端都将看到相同的值。它与应用程序设置大致相当,是的。

(警告:除非该字段标记为[ThreadStatic],但在Web应用程序中这是一个真的坏主意。)

您应该非常谨慎使用静态/共享字段,尤其是在线程环境中。除了用户/会话之间的状态不正确之外,它们还存在固有的线程安全问题,您通常需要仔细同步对非常的访问。例如,如果多个线程可以同时添加/删除/ etc,则静态List<T>将会非常危险。