.net 中lock 是否可以这样用,表单在千分之几秒内被提交了多次

aDever 2013-12-15 12:01:59
看了lock的一些资料没有实际操作过。最近遇到这样一个问题是否可以用lock解决。lock指代的是一个用户还是服务器中的一个线程?

首先是我们的用户量为50000+ 每小时15000+记录。最近新开发的一个系统中遇到这样一个问题。测试中在内网里,表单提交很正常的过了,但是提交给用户试用后,发现有很多相同单号的数据在1000之几秒内被提交了好多次,疑似网络延迟,但系统是有做判断的,如果第一次做的是插入,以后做更新,并且也有做事物。现在就是莫名的多了很多数据。目前的解决方案是在做插入时先判断是否存在,然后无论存在与否都先删除一边,做了一个双保险。求更好的解决方案。
...全文
267 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
md5e 2013-12-16
  • 打赏
  • 举报
回复
应该可以处理相同单号的问题 lock就是执行块,可么执行完lock内的代码,要么不执行 lock的用法是这么理解的 不过要完全处理单号问题还要配合单例模式和静态方法,单号通过静态方法+lock去创建 不过也可以用guid来创建唯一的订号
ltcszk 2013-12-16
  • 打赏
  • 举报
回复
为什么要在程序里lock?直接用事务在数据库做不就好了
threenewbee 2013-12-15
  • 打赏
  • 举报
回复
这个要看你的代码了。相同单号是指分配的单号出问题了还是同一笔数据被提交了多次?
aDever 2013-12-15
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
如果你说的是C#的关键字lock,它表示锁定一个临界区对象,使得其中的代码只能被拥有锁的那个线程同步执行。没有你说的那些什么系统、服务器、事务之类的功能。
嗯,有什么办法解决我的那个问题。看锁主要是想解决手头的问题,请帮助。help me
threenewbee 2013-12-15
  • 打赏
  • 举报
回复
如果你说的是C#的关键字lock,它表示锁定一个临界区对象,使得其中的代码只能被拥有锁的那个线程同步执行。没有你说的那些什么系统、服务器、事务之类的功能。
rtdb 2013-12-15
  • 打赏
  • 举报
回复
在SERVER保存一个最近1s的提交集合,新到的提交检查是否已提交

62,046

社区成员

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

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

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

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