delphi xe10.2.3 Асинхронные потоки или как управлять timeout socks smtp

программа многопоточная, все выполняется в потоке TThread, на примере 1 поток:

Имею конструкцию:

SMTP:= TIdSMTP.Create(nil);
  SSL:= TIdSSLIOHandlerSocketOpenSSL.Create(SMTP);
  Socks:= TIdSocksInfo.Create(ssl);
  SMTP.IOHandler:=SSL;
  SSL.TransparentProxy := socks;
  SMTP.AuthType:=satDefault;
  SMTP.Host:=host;
  SMTP.Port:=port;
  SMTP.Username:=email;
  SMTP.Password:=pass;
  SMTP.ReadTimeout:=Mailer.TimeOut;
  SMTP.ReadTimeout:= Mailer.TimeOut;
  SMTP.Socket.ConnectTimeout:=  Mailer.TimeOut;
  SMTP.Socket.ReadTimeout:=Mailer.TimeOut;
  SSL.ReadTimeout:=Mailer.TimeOut;
  SSL.ConnectTimeout:= Mailer.TimeOut;

....

try
SMTP.Connect;
excpet 
end;

Как видим я прописал TimeOut уже где только можно или нельзя в SMTP, SMTP.SOCKET, SSL, однако он все равно работает так же если бы я вовсе не указывал TimeOut. Вопрос такой как мне запустить SMTP.connect в асинхронном потоке, т.е. мне просто нужно допустим запустить таймер и асинхронную процедуру и проверять подключился за 6 секунд или нет, если да, то то-то, если нет, то то-то. Или же как корректно выставить TimeOut в Delphi для подобных вещей?


Ответы (0 шт):