1

我读过这样的帖子:在 ASP.net 中使用静态变量缓存信息可以吗?.

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

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

4

1 回答 1

3

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

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

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

于 2012-07-23T08:38:51.687 回答