郁闷!!!!!!!!!!!!! ( 积分: 100 )

  • 主题发起人 主题发起人 tjcytyl
  • 开始时间 开始时间
T

tjcytyl

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序里采用了5个timer控件想实现同时操作五个串口进行发送短信。但怎么用也不是我预想的结果!!郁闷死了!!高手们帮帮小弟!!!!!!!!!1
 
我在程序里采用了5个timer控件想实现同时操作五个串口进行发送短信。但怎么用也不是我预想的结果!!郁闷死了!!高手们帮帮小弟!!!!!!!!!1
 
我建议你采用多线程,而且多线程里面不要采用timer控件来做定时器,采用api函数来处理,waitforsingleobject来处理,如果有什么疑问,继续。当然,你的程序在只是处理一个串口的时候,是不是正确的,如果不正确,那程序就有问题,如果没有问题,那改成多线程很简单的。
 
啊!
终于看到救星了!
cqwty 大哥:如何实现多线程呢??能给点多线程的例子吗??那真是太谢谢您了
我的邮箱:tjcytyl@126.com
 
我的程序是采用了10个短信猫,来发送短信。将短信同步发送后要根据各自的发送状态(成功或者失败)来对数据库进行相应的操作!cqwty 大哥,采用多线程可以实现上述的同步功能吗??
 
你说的“同步”是指什么,是不是要求10个短信猫可以同时工作,但各自发各自的短信,互相之间没有关系,而且每个猫对应一个串口,如果是这样,多线程当然可以做的很好,但是如果你的机器只有一个CPU那么不是非要用多线程(单CPU的多线程在微观上仍然是单线程的嘛),可以都在主线程中处理,这样数据库操作也会少些麻烦(多线程的数据库操作要有多个会话的)。
 
不好意思,国庆出去玩了好几天,今天才回来,而且晚上才看到你的信息,
我也不是什么多线程高手,是一个十足的菜鸟,嘿嘿!可以达到同步的,但是你要说清楚要求怎么同步法?是不是你要发送的信息都保存在数据库里面,然后采用10个猫来发送,在这10个猫中,他们的任务主要就是从这个数据库里面读取没有发送的短信来发送,如果发送成功或者失败,都返回一个结果,然后将这个结果写入数据库中短信的标志位,也就是把对应短信的标志位置位发送成功和发送失败。如果是这样,可以解决了!那就是采用从线程返回结果给主线程,不管发送结果如何,总有一个结果返回,要么成功,要么失败。当主线程得到这个消息之后,根据所发送短信的识别字段(也就是唯一确定这条短信的字段)来修改该短信的标志位,不知道我说清楚没有,如果有什么不妥,继续!
 
好呀,
用多线程处理数据库
值得学习呀,
不过能否指教一些多线程方面的知识呢?
先谢啦
 
其实只需要一个Timer就够了,
用for循环来处理发送过程,
只要timer的时间段足够小,如100
多个Timer或多线程,在单CPU上都不如这种方法效率高
 
看过深度历险这本书,你就不会用timer了。如果将结果以一种消息的形式返回主线程,又主线程来处理这些数据,我觉得就对数据库处理方面不用多线程了,就由这个消息来处理。
 
谢谢各位了:更感谢cqwty对小弟本问题的再次关注!
我的意思就是:要求10个短信猫可以同时工作,但各自发各自的短信,互相之间没有关系,而且每个猫对应一个串口
我对线程和进程认识颇浅!不知道怎样去控制主线程和分配线程!
还有ycxy提出的方法我觉得不太适合我,因为一条短信的发送-等待结果-结果返回,进行相应的操作,这个过程下来要需要不止100毫秒的时间。
 
不是要你在一个时间段内完成所有的工作
如在Timer的事件里
for i:=1 to 10do
begin

WM_收短信://如果,则处理
WM_发短信;//如果,则处理
end;
 
要不你就做成一个线程,控制一下,里面加上application.processmessage看一下
 
后退
顶部