我做了个串口通信软件,在串口收发过程中需要在其中加入延时,我用的是Sleep函数,可是程序会在延时的时候出现假死现象,不知道我的方法是否正确?该如何解决消除假死现象呢?
新手提问,请各位尽量说详细点!
新手提问,请各位尽量说详细点!
解决方案 »
- 求助post怎么设置,保存对数据库的修改
- webbrowser 如何不用下载页面到本地而直接得到页面的文本
- windows服务类软件启动问题
- IdSMTP做发邮件程序时,为什么163的发不了?(在线等~分不够可以加!)
- 报表中如果显示出变量数据
- 急,急,急,怎样获得局域网内所有机器的IP地址
- 找一函数。
- 请问怎样才能知道DBGRIDEH的选中一行的某一例的值?
- 如果在用消息函数SENDMESSAGE来模拟MOUSE CLIKC和DBCLICK及DRAG了
- 各位:我用Delphi + Access 单机版想改写为小型的"网络"版,个中问题,请赐教!!!!
- 就目前新学而言~学rave还是fastreport?
- 使用AVICAP32.DLL来捕获摄像头的图像并保存到数据中,捕完后如何关闭那个黑块的窗体呀???
解决办法只能用线程。
1、把串口收发的过程写到线程里面。在线程里面使用Sleep,主界面不会假死。(这样可能程序改动较大)
2、把延时加入到线程中,也就是在需要延时的地方创建线程。线程里什么也不做就一个Sleep延时。在线程结束事件中继续程序即可。这种可能改动较小吧。不过看你代码写的如何了。如果模块清楚。这个应该是改动最少的。
i:=0;
while i<10 do
begin
Application.ProcessMessage;
Sleep(100);
end;