form1和form2是在两个机器上
还是在一个机器的一个应用程序中?   

解决方案 »

  1.   

    加一句Application.ProcessMessages;
      

  2.   

    tommychim(大脚鸟) 我加过了,上面也说明了,但是不管用qin_wei(烤毛蛋) 在一个机器上的同一个程序中
      

  3.   

    我想可能是这样:waitfor在等待中把整个应用的消息都憋死了,其他控件当然不可能给它发消息。
    既然你要做到2个机器上,就应该至少有两个应用,这样才不至于憋死。
      

  4.   

    有不有一种方法可以让我在程序那个等的地方等,并且别的事件也可以响应了?或者可以提供内似
    Dovents的方法
      

  5.   

    我不知道你在vb里怎么用.
    但如果你的Button1Click和DataArrive过程是在同一个线程/进程里面,这种用法可能不太妥当,因为你执行TEvent.WaitFor(...)后他所在线程挂起,等待event1进入发信状态,这样即使收到信息也无法触发DataArrive事件,因为他所在线程已被挂起,
      

  6.   

    有倒是有,但好象不适合你的程序
    while counter<30 do
      begin
       application.processmessage;
       counter:=counter+1;
      end;
    他需要在死循环里面加。
    但你的 waitfor时已经不接受和发送任何消息了。
    这是同一个应用时的问题。你的目的不是要两台机器进行通讯么,为什么非要把form1,form2放在一个应用中,这是没有意义的,
    到底为什么啊?!!!
      

  7.   

    heifei() 我现在的Button1Click和DataArrive过程是在同一个进程里面,那有没有好的解决办法了?VB6真的可以
      

  8.   

    qin_wei(烤毛蛋) 是因为当我发过一个命令出去后必须等待它的返回结果所以我必须等待呀
      

  9.   

    如果只是这个要求的话,我觉得无需另开线程,直接:
        Wclient.GetData(ovar, varolestr);
        lsTmp := vartostr(ovar);
        if lsTmp='Ok' then
             begin
                    //Call a procedrue to let your application go on
             end;
      

  10.   

    heifei() 你好
    我的程序是这样的,当我的程序(客户端)启动时,先自动与服务器建立联接,然后客户端输入用户名和密码后,点击回车将这些信息送到服务验证,验证完毕后服务器发信息回来,上面的Wclient.GetData(ovar, varolestr);为TWinsock收到另台机器发来的信息后的所触发的事件,并非它的方法
      

  11.   

    1,你所说的功能需要在服务器段和客户端之间定制一个协议,就象:
    如果客户端发送某类信息,服务器端刚什么干什么..;
    如果客户端发送某类信息,服务器端刚什么干什么..;
    ......
    2.你用那个TWinSock是ms的ocx控件吧;
    如果是的话那GetData就是他的方法,而不是事件;
      

  12.   

    form2.event1.waitfor(6000)
    你这句是在主线程中执行的, 会把其它处理都堵住的.
      

  13.   

    halfdream(哈欠) 谢谢我已知道是这儿的问题了,我现在另外为之创建了一个类,用的很好,再感谢各位同道