问个有关设计方面的问题
根据实际问题来吧:我在用TC35I发短信的时候要调用一个方法发送,该方法可把一条内容一个一个的发送给N个人,每发一条信息给一个人要5秒左右,在这5秒内不能发给第二条.我想问的是.如果我第一次发一条内容给3个人(要15秒才能正常发完),如果5秒后我又要发第二条内容给3个人,这时候就会导致第一条内容和第二条内容发生冲突.有没有什么好方法让第一条短信先发完然后再发第二条短信.
------有点乱,举个例子吧
如过有两个人同时调用这个方法,有没有什么办法使该方法第一个人运行完该方法后第二个人才能使用
sendingSms(List <string> number,string value)
{
foreach (string value in number)
{
}
}
------解决方案--------------------这种应该是有个方法可以返回是否发送成功的信息.
可以用timer控制控制时间,然后发送前在检查下返回的信息,返回发送成功后再发送
------解决方案--------------------设置个互斥标记就行
------解决方案--------------------用一个队列,每次要发短信,就把要发的短信内容和发送的号码放到队列里,然后写一个windows service,不停的去读队列里的东西,然后发送。
这样你在T实践发送了一个短信给三个人,T+5秒又发了一个短信给3个人,而在windows service程序中,在T秒发现队列中有一个短信,取出来,发送给三个人,这个时候时间是T+15秒;然后又检查队列发现又有一个短信,于是在发送,发送完的时间是T+30秒。
这样就能解决你的问题了
------解决方案--------------------队列
加锁
互斥
循环等待
------解决方案--------------------使用队列比较理想
------解决方案--------------------Nick_Nick(统统..都给..我..密码),说得很有道理。。。
------解决方案--------------------用一个队列,每次要发短信,就把要发的短信内容和发送的号码放到队列里,然后写一个windows service,不停的去读队列里的东西,然后发送。
这样你在T实践发送了一个短信给三个人,T+5秒又发了一个短信给3个人,而在windows service程序中,在T秒发现队列中有一个短信,取出来,发送给三个人,这个时候时间是T+15秒;然后又检查队列发现又有一个短信,于是在发送,发送完的时间是T+30秒。
这样就能解决你的问题了
------解决方案--------------------我做的时候处理办法跟zhangci226(三只熊熊)说得一样,可以借鉴。
------解决方案--------------------把此方法改为静态方法,就是顺序访问
或者设置个互斥标记
------解决方案--------------------当调用sendingSms的时候,把这次用的时间,保存起来
当再次调用的时候,判断一下
------解决方案--------------------用消息队列是正解
------解决方案--------------------多线程不懂哈