在 firemonkey 中禁用 Indy TIdTCPClient 连接重试
disable indy TIdTCPClient connect retries in firemonkey
我有这个代码来检查与我的服务器的连接
所以代码是这样的:
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;
在 运行 之后:
如果服务器在线,一切正常
但如果服务器在线,我会收到很多这样的错误:
debug
或release
模式没有区别!都有错误
同样在 android 这导致两个应用程序崩溃并且不处理剩余代码!!..
我怎样才能避免这个错误?
只有当您在主 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;
我有这个代码来检查与我的服务器的连接 所以代码是这样的:
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;
在 运行 之后: 如果服务器在线,一切正常 但如果服务器在线,我会收到很多这样的错误:
debug
或release
模式没有区别!都有错误
同样在 android 这导致两个应用程序崩溃并且不处理剩余代码!!..
我怎样才能避免这个错误?
只有当您在主 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;