要做一个网络用户登录的程序. 
用winsock()数组.0为listen,有新的请求后接受,并load一个新的winsock,用这个新的winsock与要连接的客户端去连接. 
这时候有一个问题,连接后,客户端发来用户名和密码,这时候程序就会调用ADO去查询,然而从大量的数据库中查找信息,可能需要的时间很长,比如三秒五秒,这个过程中,程序整体像是处于不响应的状态,既不能接受新的连接,而且其它已有的连接好像也卡住了. 
有没有解决的办法呢? 盼高人解答!

解决方案 »

  1.   

    对于单线程程序而言这个问题是没法避免的。你可以通过其他途径来解决,如:1、用支持多线程的工具开发。
    2、如果非要用VB,可以用IIS做网络服务器,把业务组件放到COM+里。
      

  2.   

    感谢楼上.
    我也知道难度高.但用IIS的话,不能保持在线,比如与客户连接后要实时与客户通讯,IIS好像做不到吧.
      

  3.   

    ADODB.Connection.Execute() 第三个参数加上 adAsyncExecute 就可以异步执行查询,查询结果在 ExecuteComplete 事件时返回。
      

  4.   

    嗯,服务端与客户端要能互相发送消息呀.ADODB.Connection.Execute() 第三个参数加上 adAsyncExecute 就可以异步执行查询,查询结果在 ExecuteComplete 事件时返回。这里同时并发多个查询怎么办呢?
      

  5.   

    把部分请求放到ActiveX EXE里,利用其单元模型线程实现异步处理
      

  6.   

    楼上的方法我也考虑过,但没想好activex怎么并发?也是用数组activex.