próbuję umieścić indy TIdHttp w wątku, Próbowałem to:Odczekaj wątku bez zamrażania aplikacji
type
TSendThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
public
http : TIdHTTP;
URL : String;
Method : String;
property ReturnValue;
end;
procedure TSendThread.Execute;
begin
form1.Memo1.lines.Add(http.Get(URL));
ReturnValue := 1;
end;
A w głównym:
procedure TForm1.Button1Click(Sender: TObject);
var t : TSendThread;
begin
t := TSendThread.Create(true);
t.URL := 'http://www.url.com/';
t.http := http;
t.Start;
showmessage(IntToStr(t.ReturnValue));
end;
Mój problem o to, że następna instrukcja zostanie wykonana (showmessage) bez czekania na wykonanie nici, spróbowałem użyć "WaitFor", ale to zamroziło aplikację.
Czy istnieje inne obejście problemu?
Dziękuję.
Jeśli „czeka na to”, aby zakończyć, nie ma potrzeby, aby umieścić go w wątku w pierwszej kolejności. Wątki są wykonywane w tle, więc interfejs użytkownika * nie musi czekać. –
@Benjamin: Jeśli musisz użyć 'ProcessMessages', dodałeś teraz nowy problem. To ** nigdy ** właściwe rozwiązanie. –
'ProcessMessages' jest OK, gdy jest używany ostrożnie – OnTheFly