在firemonkey中禁用indy TIdTCPClient连接重试

时间:2016-12-24 15:42:29

标签: firemonkey indy delphi-10.1-berlin

我有这段代码来检查与我的服务器的连接 所以代码是这样的:

function CheckInternet(ssip:string): boolean;
begin
result:=false;
with form1.IdTCPClient1 do
  try
    ReadTimeout:=2000;
    ConnectTimeout:=1000;
    Port:=80;
    Host:=ssip;
    Connect;
    Disconnect;
    result:=true;
  except
    on E:EIdSocketError do
      result:=false;
    end;
end;
运行后

: 如果服务器在线,每件事都可以 但如果服务器在线,我会遇到很多错误:

enter image description here

debugrelease模式没有区别!两者都有错误 也在android这导致两个应用程序崩溃,并没有处理仍然代码!! .. 我该如何避免这个错误?

1 个答案:

答案 0 :(得分:0)

只有在主UI线程的循环中调用CheckInternet()并且不捕获引发的异常时,才会发生这种情况。当捕获未捕获的异常时,弹出消息由FMX中的默认异常处理程序显示。

EIdSocketError不是Connect()可以提出的唯一例外类型。还有其他几种可能的类型,你没有抓住它们。您应该从except块中删除过滤器:

function CheckInternet(ssip:string): boolean;
begin
  result:=false;
  with form1.IdTCPClient1 do
  try
    ConnectTimeout:=1000;
    Port:=80;
    Host:=ssip;
    Connect;
    Disconnect;
    result:=true;
  except
    result:=false;
  end;
end;