日期:2014-05-18  浏览次数:20454 次

静态类,静态属性的问题
C# code

public static class User
{
static private string _username;
static public string Username
{
 get
{
  return _username;
}
set
{
  _username=value;
}
}
}




C# code

public static class User
{
static private string _username;
static public string Username
{
 get
{
 if(HttpContext.Current!=null)
  return HttpContext.Currtent.User.Identity.Name;
 else
  return _username;
}
set
{
  _username=value;
}
}
}


在一个示例程序中看到的。
这个类是用来为每一个Form登陆的用户,保存用户名的。在使用时直接可以用User.Username来取得当前用户的用户名
疑问是:会不会有多线程问题?第二个用户再登陆后取得的是User.Username是否还正确
1.第一段代码多用户登陆时肯定会有并发问题,会出错
2.第二段代码虽然取用户名时没多线程问题,但这样写成static的感觉没什么意义
3.有没有一种办法让每一个用户一直用他自已的一个户名而只用取一次,和别的用户登陆也不冲突



------解决方案--------------------
好深奥
------解决方案--------------------
可以用session或者cookie存读用户信息,写个static接口,一样可以用User.Username的方式调用。
------解决方案--------------------
用session或者cookie
------解决方案--------------------
用session或者cookie或者驗證票
------解决方案--------------------
你那样写的法多用户情况下会有问题的,
要用session或者cookie或者驗證票 可以封装成属性来存取比较方便
------解决方案--------------------
session cookie
------解决方案--------------------
写了这么多你还不如用session
------解决方案--------------------
探讨
用session或者cookie

------解决方案--------------------
如果是web。。这么搞累了~
------解决方案--------------------
每次登陆的时候 判断一下 session["user"]里有没有这个用户
------解决方案--------------------
session and cookie
------解决方案--------------------
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
------解决方案--------------------
像这样使用最好控制并发

session也不好,经常会丢失什么之类的事发生
------解决方案--------------------
探讨
像这样使用最好控制并发

session也不好,经常会丢失什么之类的事发生

------解决方案--------------------
探讨
一定得选最好的油瓶子,

中世纪西班牙皇家顶级御用大厨设计。

制就制最高档次的酱油瓶,



------解决方案--------------------
探讨
static public string Username
{
get
{
if(HttpContext.Current!=null)
return HttpContext.Currtent.User.Identity.Name;
else
return _username;
}
}