首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-01-20 
静态方法并发内部变量会不会共享?publicstaticUserModelUserInfo{get{UserModelumHttpSessionStatesessio

静态方法并发内部变量会不会共享?
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对象是公共的,在别的对象里都只是引用,不是实例化.
所以这种做法不是内部变量.

热点排行