我的程序中有两个线程同时在运行: 一个SOCK线程,用来从服务上下载文件;一个串口线程,用来将文件下载到PDA,空闲的时候发在线检测命令给PDA,若PDA在一定时间内返回相应的信号表示在线,否则退出。现在的问题是,当SOCK线程在用FTP下载文件时,串口线程就收不到PDA返回的信号,以至通信无法继续下去。 请问这是怎么一回事,要怎么解决?

解决方案 »

  1.   

    开第三个线程,把检测PDA和往PDA里面写数据的功能分开,看看会怎么样?
    从服务器下载文件和向PDA下载文件的操作要注意文件的同步,还有就是在用SOCKET下载的线程里面加上sleep看看...
    不知道你在程序里面是不是用到了CriticalSection,如果有的话,就要查看一下是不是有些Acquire之后忘记Release了?
      

  2.   

    〉〉问题是,当SOCK线程在用FTP下载文件时,串口线程就收不到PDA返回的信号,以至通信无法继续下去。 请问这是怎么一回事,〉〉说明你的代码处理有问题,互相有影响,
    可能要加入一些同步处理贴出关键代码
      

  3.   

    从服务器上下载文件与下载文件到PDA两个过程是分开的,只有从服务器上将文件下载下来后才将此文件写入PDA,在SOCK下载文件的同时,串口线程是空闲的,只是做一件事:检测PDA在线,每隔22秒发一次信号给PDA。
      

  4.   

    这个可以肯定,查询信号发了,格式也对。如果没有SOCK通讯,就可以收到PDA的返回信息。
      

  5.   

    我刚才调试了一下,发现一个问题,FTP下载文件时弹出一个对话框来显示下载进度,如果把这个对话框去掉不显示,那么串口线程就会收到PDA的返回信息。但这个对话框还是要的呀,对话框的调用和进度显示都是通过PostMessage, 应该不影响线程呀,各位,有什么好的办法呀?