我VB需要等待一个函数返回,这个函数接受不到外部数据时,无限等待不往下循环,接受到外部数据时,取得数据,继续进行,所以出现了阻塞问题,导致系统其他操作不能进行,给我给我点建议啊,该怎么设计,越详细越好,非常感激~~~(多线程不稳定,试过了,老出错)

解决方案 »

  1.   

    Private Declare Function recv_data Lib "mc8000.dll" (ByVal socket As Long, ByVal recv_buffer As String, ByVal buf_len As Long, terminal_id As Integer) As Long
    这是函数声明,这个mc8000.dll是VC封装好的我需要调用这个函数,ress = recv_data(res, buf, 1024, terminal),调用这个函数的时候是问了接收数据,此时如果有数据的时候,调用返回数据,没有数据到达,则这个函数一直执行不过去,也就是等待数据到了才返回,也就是如果在主程序里面调用了这个函数,则主程序就不能进行其他操作了,所以,我不知道该怎么弄好
    不知道我说明白没有,请大家帮助,非常感谢,我弄好几天了,非常着急
    用activex exe的时候,这个函数好像不管有没有数据都不返回,我不会activex exe单独调试,只有在用标准exe调用时回不来数据,所以觉得不行
    谢谢大家
      

  2.   

    数据到达的时间是连续的还是离散的?如果连续,用while循环,如果离散,用定时器吧
      

  3.   

    A Thread to Visual Basic: Multi-Threading In VB5 and VB6:
    http://www.freevbcode.com/ShowCode.Asp?ID=1287介绍多线程的文章
      

  4.   

    数据到达的时间是离散的,外部发送数据就有,不发送数据就没有,不能用定时器,因为这个函数没有数据时是不返回的,停在那个地方,程序死了,定时器无法触发用多线程了,调用的API 函数也不行,会很不稳定,在程序代码下运行没有问题,可是生成可执行文件就会出现内存不能为写的问题,我查了不少资料好象说多线程就是容易造成崩溃的,因为牵扯到同步,数据读写的问题更容易出现崩溃的问题,请大家帮帮我还有其他的办法吗