读书人

静态方法并发内部变量会不会共享?解决

发布时间: 2012-01-20 18:53:53 作者: rapoo

静态方法并发内部变量会不会共享?
public static UserModel UserInfo
{
get
{
UserModel um;
HttpSessionState session = HttpContext.Current.Session;
if (session[ "UserInfo "] != null)
{
try
{
um = (UserModel)session[ "UserInfo "];
}
catch { um = new UserModel(); }
}
else
um = new UserModel();
return um;
}
}
多用户并发时会不会返回同样的东西?

[解决办法]

[解决办法]
前提是你的静态方法,写在一个单独的类里面
[解决办法]
session[ "UserInfo "]又不是静态的 不会返回相同的东西

当session[ "UserInfo "] == null 时 返回相同的东西new UserModel()
[解决办法]
静态变量的话肯定共享
内部的临时变量不会
[解决办法]
HttpSessionState session = HttpContext.Current.Session;
这就不是内部变量范畴了。
Session对象是公共的,在别的对象里都只是引用,不是实例化.
所以这种做法不是内部变量.

读书人网 >asp.net

热点推荐