静态变量是否在用户会话中保留其值?
我有一个ASP.NET Web应用程序,其中有两个按钮。一个用于设置静态变量值,另一个用于显示静态变量值。
namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { public static int customerID; protected void Page_Load(object sender, EventArgs e) { } protected void ButtonSetCustomerID_Click(object sender, EventArgs e) { customerID = Convert.ToInt32(TextBox1.Text); } protected void ButtonGetCustomerID_Click(object sender, EventArgs e) { Label1.Text = Convert.ToString(customerID); } } }
尽管这在单用户环境中有效,但是如果有2个用户同时从两台计算机登录,会发生什么情况,用户1将值设置为100,然后用户2将值设置为200。在用户1调用“获取值”按钮之后。他将看到什么价值?
是的,这就是为什么在Web应用程序中使用静态变量时要非常小心的原因。您将在并发问题中运行,因为服务请求的多个线程可以修改变量的值。
之后,用户将看到200。