Android 6上的TIdTCPClient应用程序崩溃

时间:2016-11-08 20:37:19

标签: android delphi crash indy

在Delphi XE8上,我有简单的功能来检查互联网连接:

function TForm1.Internet: boolean;
begin
 result:=false;
 try
  IdTCPClient1.ReadTimeout:=2500;
  IdTCPClient1.ConnectTimeout:=2500;
  IdTCPClient1.Port:=80;
  IdTCPClient1.Host:='google.pl';
  IdTCPClient1.Connect;
  IdTCPClient1.Disconnect;
  result:=true;
 except
 result:=false;
end;
end;

在旧的Android版本中,一切正常,但在andoid 6中,当我调用IdTCPClient1.Connect时应用程序崩溃(关闭)。 然后我了解到这是阻塞函数,它必须在工作线程中,所以我写了这样的东西:

type
  TTest = class(TThread)
 private
 { Private declarations }
  protected
 procedure Execute; override;
end;

并在实施部分中:

procedure TThread.Execute;
begin
  try
   Form1.IdTCPClient1.ReadTimeout:=2500;
   Form1.IdTCPClient1.ConnectTimeout:=2500;
   Form1.IdTCPClient1.Port:=80;
   Form1.IdTCPClient1.Host:='google.pl';
   Form1.IdTCPClient1.Connect;
   Form1.IdTCPClient1.Disconnect;

   except
    showmessage('no internet connection');
   end;
  end; 

 procedure TForm1.Button1Click(Sender: TObject);
 var
   Test : TTest;
  begin
    Test := TTest.Create(False);
  end;

但不幸的是,当我调用TForm1.Button1Click时,应用程序仍在关闭android 6(在Windows和较旧的Android版本上运行正常) 请帮帮我;)

0 个答案:

没有答案