静态变量是否在用户会话中保留其值?
我有一个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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这适用于单用户环境,但如果有两个用户同时从两台计算机登录,会发生什么情况,用户1将值设置为100,然后用户2将值设置为200.之后用户1调用"获取值"按钮.他认为什么是价值?
我知道Web应用程序中使用的静态变量是为Web应用程序中的所有用户共享的.如果我有一个使用某个静态私有变量的库(DLL),那么使用该库的所有应用程序是否共享该变量的值?
例如,假设我的DLL中有以下代码:
private static bool isConnected = false;
public static void Connect()
{
// TODO: Connect.
isConnected = true;
}
public static void Disconnect()
{
// TODO: Disconnect.
isConnected = false;
}
Run Code Online (Sandbox Code Playgroud)
然后,在应用程序A,我把myDLL.Connect()它设置的值isConnected来True.然后我有一些应用程序B执行相同的操作.如果应用程序稍后调用myDLL.Disconnect(),并应用B见isConnected为False,因为这两个应用程序共享同一个静态变量相同的DLL文件?在这种情况下,DLL文件在同一文件路径中实际上是相同的文件.