ASP.NET多用户操作相同互斥的对象

时间:2022-08-29 11:49:08

[一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3574154.html ] 

现象:公有静态变量不可用于ASP.NET多用户操作,否则该变量会被多用户改写,导致错误。参考: http://blog.csdn.net/dobly/article/details/54826

解决:可以使用public static Dictionary<key,value>来实现多用户互斥操作。其中key存放唯一的用户登录ID,value存放数据内容。

e.g.

Global.aspx.cs:

 1 public static class Global
 2 {
 3     public static Dictionary<int, string> DataChangesTempXML;
 4     public static void InitDic()
 5     {
 6             //当用户登录的时候添加用户字典
 7             if (DataChangesTempXML == null)
 8                 DataChangesTempXML = new Dictionary<int, string>();         
 9             if (!DataChangesTempXML.ContainsKey(PlatBaseUserTBO.LoginInfo.UserID))
10                 DataChangesTempXML.Add(PlatBaseUserTBO.LoginInfo.UserID, "");    
11     }
12 }

Login.aspx.cs:

 

1 Global.InitDic();

 

xx.aspx.cs:

1 //对字典赋值
2 Global.DataChangesTempXML[PlatBaseUserTBO.LoginInfo.UserID] = id;
3 //获取字典对象
4 m_DataChangesTempTEN.Changesxml = Global.DataChangesTempXML[PlatBaseUserTBO.LoginInfo.UserID];