Ja Danke für Eure Aussagen,
himitsu hat Recht, es handelt sich um die inet-download Geschichte.
Ich werde mich mal bei den Links von euch durchlesen wie ich es korrekt anstellen sollte.
Es geht mir nicht um parallele Threads, einfach nur ein Thread der arbeitet und wenn er fertig ist mir ein Ergebnis liefert aber solange wie er arbeitet das Programm nicht blockiert wird, und das ganze bei Laufzeit.
Da soll noxh eine Thread-Abbruch Funktion rein damit sich das ganze Thread Gedöns auch lohnt nur kann ich nicht den Abbruch-Knopf drücken weil "keine Rückmeldung" erscheint.
Einfache Abänderung, mit dem selben Ergebnis: Ein Event und WaitFor statt dieser Schleife.
Ja das versuche ich gerade innerhalb der Funktion umzusetzen/einzubauen. Ich hoffe in einem der Links steht was darüber
Das mit Future ist die falsche Richtung, Danke für die Hinweise @mehrere
edit
Code:
WaitForSingleObject(MyThread.Handle, INFINITE);
Das teste ich gerade als Ersatz für die
repeat Schleife aber Programm friert immer noch ein.
So sieht jetzt eine real-Funktion aus:
Delphi-Quellcode:
function TFormMain.GetTHTTPClient ( Const xURL : String ) : String;
var
tmp : String;
MyThread: TThread;
begin
tmp := '';
MyThread := TThread.CreateAnonymousThread(
procedure
var
HttpClient: THttpClient;
HttpResponse: IHttpResponse;
begin
tmp := '';
HttpClient := THTTPClient.Create;
try
HttpResponse := HttpClient.Get( xURL );
tmp := HttpResponse.ContentAsString();
finally
HttpClient.Free;
end;
end
);
MyThread.FreeOnTerminate := True;
MyThread.Start;
WaitForSingleObject(MyThread.Handle, INFINITE);
Result := tmp;
end;