多用户同时调用Webserivce端口方法

.Net技术 码拜 8年前 (2016-09-17) 1456次浏览
手机App,调用取号方法。存在某种情况,就是可能同时几个人一起点击了取号,而数据库中的号源是,1,2,3,4,5.。依次类推,假设5个人同时点击取号,那么本人就得自动分配号源, 5个人分别 分配1-5号 这个5号码,返回出来。
问题:App端他肯定是不做控制的,全部操作都在服务端,那么什么情况下,才能依次获取到5个号码,并且不会重复?
1.本人在服务端使用了lock(obj)不行,取号时,返回的都是5个重复的号,2. 使用队列,感觉没法控制住 5个点击同时进入 取号
3.多线程控制, 进来一次开始一个线程?好像不行。
本人最终的完美想法是,5个人同时点击,第一个人取号到1,取号方法结束,第二个人再进行取号,相似排队。
不知道大家有什么好的想法没有。就教
相似模板:
WS_cebservice.cebservice ceb = new WS_cebservice.cebservice();
string xml = ceb.Order(“”, “”, str.ToString());
str 为本人传入XML串,来获取某个时段的号码,xml为本人返回的号码。  问一下怎么样控制
解决方案

10

本人觉得你设计思路有问题,为什么要先有号,再取呢?
为何不是每个人来取号时,再产生号,把数据写入表,再根据表产生自动ID,
把这个ID作为取号, 不行吗?

10

?排啥队?悲观锁定就好

20

不知道你为啥lock不好使,不会用就用queue,c#自带的队列类,进队和出队本身是线程安全的,多线程情况下也能保证出队顺序

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明多用户同时调用Webserivce端口方法
喜欢 (0)
[1034331897@qq.com]
分享 (0)