关于死循环..

yzforhappy 2012-11-09 05:51:09
我最近要做个发短信的服务,用wcf做的.问题是 移动提供的服务 不能高并发 每秒只能6个
我这边现在的想法是用队列,页面请求的 加入队列

现在比较菜的问题是 我怎么触发 发送队列的msg
是一直死循环check这个队列吗?
有什么好的想法?
求指导,本人小菜
...全文
306 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
q27981872 2012-11-12
  • 打赏
  • 举报
回复
用时,开线程死循环检测。不要时,把线程关了,不就不是死循环了呃。
yzforhappy 2012-11-12
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
线程啊,里面可以死循环检查
我就是这个想法,我想问的是 有木有 不要死循环的方法. 如果没有就只能死循环了 我先尝试下6楼的方法 哈哈
yzforhappy 2012-11-12
  • 打赏
  • 举报
回复
引用 2 楼 Linux7985 的回复:
直接对接行业网关去搞几个通道,每个通道最大限制是50条/秒, 这样只要搞6个通道,每个小时就可以发100多万条。这才有效率
这个貌似很难弄吧 很搞吧..现在18大 移动都开始绑定ip 才能发了
threenewbee 2012-11-10
  • 打赏
  • 举报
回复
使用ObservableCollection<T> 当集合元素增加减少的时候,触发CollectionChanged事件,添加你的代码。
flydreams138 2012-11-10
  • 打赏
  • 举报
回复
可把要发送的号码用类似list之类的对象保存起来。同时通过新建一个线程从list中取号码,然后向该号码发送消息,每发一次线程睡眠1000/6毫秒。发完一个号码后把该号码从list中移除掉。注意多线程对list操作时,要将list锁住,防止数据紊乱
  • 打赏
  • 举报
回复
引用 楼主 yzforhappy 的回复:
问题是 移动提供的服务 不能高并发 每秒只能6个
这个描述很含混不清,看不太懂含义。 移动提供一个网关接口方法,你的并发程序完全可以调用啊,调用它的时候写个
lock(gateway){
...
}
语句就行了。而“每秒6个”具体是什么限制呢?是网关会抛出异常,还是等待?如果是等待,那么(最简单地)你无需做任何事情。如果是抛出异常,那么你可以在异常后重试;或者自己保存最近6次发送消息的时间(放在一个数组中),如果发送过快则可以插入 Sleep(...) 语句。 如果是为了服务宕机时仍然可靠,那么可能需要MSMQ或者数据库来缓存消息。这是另外的问题(通常也不需要)。
  • 打赏
  • 举报
回复
引用 楼主 yzforhappy 的回复:
我最近要做个发短信的服务,用wcf做的.问题是 移动提供的服务 不能高并发 每秒只能6个 我这边现在的想法是用队列,页面请求的 加入队列 现在比较菜的问题是 我怎么触发 发送队列的msg 是一直死循环check这个队列吗? 有什么好的想法? 求指导,本人小菜
你所说的队列具体是.net的什么类型对象呢?
Dogfish 2012-11-10
  • 打赏
  • 举报
回复
用线程加amazon的云服务。
坚_持 2012-11-09
  • 打赏
  • 举报
回复
用线程可以解决
x91csharp 2012-11-09
  • 打赏
  • 举报
回复
ArrayList li=new ArrayList(); public void check(){ while(True) { if(li.count>0){ 取出li[0]发送 发送成功后移除li[0] } } } 上面这些代码发到一个方法用线程调用,然后li可以定义成静态全局变量,从其他地方不断往里面添加 代码是手写的,有错误请不要喷。。
xiaofeiren0 2012-11-09
  • 打赏
  • 举报
回复
用线程
烈火蜓蜻 2012-11-09
  • 打赏
  • 举报
回复
直接对接行业网关去搞几个通道,每个通道最大限制是50条/秒, 这样只要搞6个通道,每个小时就可以发100多万条。这才有效率
bdmh 2012-11-09
  • 打赏
  • 举报
回复
线程啊,里面可以死循环检查

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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