想要实现类似全局变量非得用静态方法吗?多用户同时提交的冲突怎么解决呢?

seal031 2009-03-12 10:15:42
比如我要定义一个ArrayList类型的全局变量,要在程序里几个互不相关的方法里操作它。用静态变量或静态方法的话,当A、B两个用户同时操作时,A向ArrayList插入2个对象;B插入3个对象。那当A/B提交时ArrayList里就有5个对象了。。请问有什么办法既可以实现类似全局变量的功能,又可以避免多用户同时操作的冲突呢?
...全文
242 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hy_lihuan 2009-03-12
  • 打赏
  • 举报
回复
个人认为你这样的需求最简单的就是数据库
  • 打赏
  • 举报
回复
对于你来说最近的答案应该是 Session[.....]


不过,我不会使用这类东西。让我们退回到你说的static变量看看,可能你不知道(!),如果web应用部署在空间商虚拟主机上,应用程序进程进程经常因为服务器或者iis或者asp.net系统维护功能被回收(重启),于是static变量、Session集合、Application集合等都“丢失”了。这是你在自己的电脑上写点小程序时所想不到的,你应该已开始就花100、200块钱租一个空间一边开发一边把asp.net应用放到真正的外部服务器上去测试,才能发现这类问题。

面对这类问题,如果你要求开发一个稳定的应用程序,你就不会轻易把什么数据依赖于static、Session集合这种方式保存,而是会考虑数据持久化、Cache加速这类机制。当然,专业开发人员从客观的生产服务器的特性为编程基础,而初学者只要在自己的电脑为基础学点编程语法可能就满足了。

sohighthesky 2009-03-12
  • 打赏
  • 举报
回复
试过了?两个用户提交会加到一起,
IIS会为不同的用户创建不同的IIS进程的吧
sjt000 2009-03-12
  • 打赏
  • 举报
回复
你先把你的需求理清楚哈,
金大哈 2009-03-12
  • 打赏
  • 举报
回复
是这样的吗


我不太清楚啊

那楼主的意思是输入定义一个STATIC变量的话,如果网站有1万人访问,他们都同时操作这个变量,那会已最后一个人操作的结果是最终结果啊


如果这样的话 网站记录当前访问人数可以这么做了


不清楚情况 随便说的啊


如果有错,愿意的话麻烦指出,谢谢---逻辑是按楼主的推测




qiuming0306 2009-03-12
  • 打赏
  • 举报
回复
利用单例模式:可以看我的学习记录
http://blog.csdn.net/qiuming0306/archive/2009/02/27/3941932.aspx

class Singleton
{
public static Singleton Instance() {
if (_instance == null) {
lock (typeof(Singleton)) {
if (_instance == null) {
_instance = new Singleton();
}
}
}
return _instance;
}
protected Singleton() {}
private static volatile Singleton _instance = null;
private ArrayList ary;
public void Additem()
{
//添加方法
}
public void removeitem()
{
//移除数据元素
}

}


当然可以用。net的单利方式,比我的代码要简单。

62,268

社区成员

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

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

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

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