Is het veilig om een repeat until loop te doen in een TTask? En kan deze task dan ook gewoon gestopt worden? Ik wil namelijk elke 30 sec een http get doen bij mijn api; om te kijken of er nieuwe clients beschikbaar zijn - en in plaats van dit in de main thread te doen met een timer dacht ik aan een TTask, met daarin een while/repeat until - loop - en een pause om 30 seconden tussen de aanvragen te hebben.
Kan ik dan "gewoon" cancel doen om de Task te stoppen, en is dit "veilig" - of moet ik in de loop controleren op een cancel?
Delphi Code:
FListTask := TTask.Create(procedure
var
lHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL;
begin
lHTTP := TIdHTTP.Create(nil);
try
lHTTP.ReadTimeout := 30000;
lHTTP.HandleRedirects := True;
IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
IdSSL.SSLOptions.Method := sslvTLSv1;
IdSSL.SSLOptions.Mode := sslmClient;
lHTTP.IOHandler := IdSSL;
lHTTP.CookieManager := IdCookieManager1;
Finally
try
repeat
lHTTP.Get('http://website.com/'+lPath, TStream(nil));
until true;
Finally
lHTTP.Free;
end;
end;
end);
Tevens - ik wil gebruik maken van de cookie manager die op het mainform staat, is dat veilig vanuit de Task? of moet ik daar een eigen cookie manager aanmaken? Het is maar juist omdat in de mainthread wordt ingelogd, en er een cookie wordt opgeslagen voor de sessie. En die cookie heb ik ook nodig voor de verbinding om de lijst met clients op te vragen
Bookmarks