问一个静态变量并发的问题。

aassbu 2011-10-09 11:34:00

private static List<DataTable[]> _Tables = new List<DataTable[]>();
……
protected void But_UpLoad_Click(object sender, EventArgs e)
{
_Tables =……//构造并且展示
}
protected void But_Resolve_Click(object sender, EventArgs e)
{
//进一步处理_Tables
}


现在的问题是:如果有2个用户的话,第一个用户如果只执行了第一步,这个时候如果第二个用户也执行了第一步。那第一个用户的数据就变成了第二个用户的数据。
这个问题要怎么解决啊。
...全文
176 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
rczjp 2011-11-02
  • 打赏
  • 举报
回复
或者换个思维,第一步和第二步就看作一个步骤!
zaicui 2011-11-02
  • 打赏
  • 举报
回复
ViewState是页面级的缓存,只能保存在当前页面。asp.net的页面你查看源文件的时候都会发现一个叫_ViewState的隐藏字段
fangyuantdy 2011-10-09
  • 打赏
  • 举报
回复
小网站的用Session呗
aassbu 2011-10-09
  • 打赏
  • 举报
回复
除了viewstate还能用啥呢?一般的变量可以用隐藏控件保存,这种特殊的呢?
qwertxp 2011-10-09
  • 打赏
  • 举报
回复
既然此变量是针对每用户的,肯定就不能用static。至于刷新会导致变量丢失,显然应该将此变量存到不会丢失的地方,比如viewstate。
wu6628009 2011-10-09
  • 打赏
  • 举报
回复
高手们。。。。求解释
aassbu 2011-10-09
  • 打赏
  • 举报
回复
怎么加锁?如果去掉static,因为第一步是要刷新页面的,所以第二步的时候值会不在了,才考虑用了静态!加锁要怎么加?
only_lonely 2011-10-09
  • 打赏
  • 举报
回复
加锁亦是无用。

用viewstate吧。
枪牌 2011-10-09
  • 打赏
  • 举报
回复
要么去掉static,要么加锁
liukaizxc 2011-10-09
  • 打赏
  • 举报
回复
不要用 private static List<DataTable[]> _Tables = new List<DataTable[]>();
你可以用 ViewState 保存
把 _Tables 保存读成xml的字符串 保存在ViewState 里面 要用的时候 在转换过来好了
可能有点麻烦 不过应该能解决问题
mabaolin 2011-10-09
  • 打赏
  • 举报
回复
private static List<DataTable[]> _Tables = new List<DataTable[]>();
只能把static去掉。
  • 打赏
  • 举报
回复
既然是多用户就不要静态,静态是全局的,多用户肯定会混乱的

要么就用锁,但是我觉得还是不用静态的好.
枪牌 2011-10-09
  • 打赏
  • 举报
回复
楼上几位说用viewstate,viewstate能对不同用户进行区分?
求解释

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧