关于在目的URL繁忙或者网络异常的情况下,,TIdHTTP.Get(URL)没有任何信息反馈,一直阻塞在这里,try...except也无法捕获异常,网络搜索这方的解决办法,但是一直找不到,ConnectTimeout或者ReadTimeout根本不起作用,哪位大侠有这方面的解决办法的??? 有时候正常的,但是到网络不好的时候就会出现卡死。。

解决方案 »

  1.   

    终极办法:使用线程中动态建立idhttp。
      

  2.   

    不在界面上用控件
    动态创建idhttp,IdAntiFreeze来用var
     IdHTTP: Tidhttp;
     IdAntiFreeze: TidAntiFreeze;
    begin
      IdAntiFreeze:=TIdAntiFreeze.Create(nil);
      IdAntiFreeze.OnlyWhenIdle:=False;
      IdHTTP:=Tidhttp.Create(nil);
      try
         StrHtml:=IdHTTP.Get(PChar('http://www.vdj8.com/'));
      finally
          IdHTTP.Disconnect;
          IdHTTP.Free;
      end;
      

  3.   

    可以用线程来解决,TidAntiFreeze可以解决界面不死锁,它采用的方式是不停的Application.ProcessMessage,会导致消息重入,如果想彻底解决,最好是采用线程加消息的方式。
      

  4.   


    。你啥原理,我IdAntiFreeze不是动态创建的,但是idhttp我是动态创建的,总之感谢我再看看
      

  5.   

    idhttp是阻塞的,不用线程不成。
      

  6.   


    关于这句话我还是不理解耶!!谁能给解释一下???如果用线程来处理,是不是就不需要TidAntiFreeze了?