Chce napisać bibliotekę, która ma dwie funkcje:
- Na wątku wysyła przez HTTP request, i gdy dostanie odpowiedź przypisuje ją do zmiennej globalnej
- druga funkcja jedynie pobiera wartość tej zmiennej globalnej (w późniejszym momencie)
założenie jest takie żeby nie blokować aplikacji, a w dwóch fazach otrzymać odpowiedź z serwera.
Mam tylko jeden problem, Synchronize(funkcja) nie jest wykonywana:
procedure TIndyInAThread.Execute();
const
D_URL='http://www.internet.pl/webservice.php';
var
LResult:String;
begin
LResult:=FHTTP.Post(D_URL,FParams);
if TryStrToInt(LResult,FCurrentNo) then
ZMIENNA_GLOBALNA:=FCurrentNo;
// Synchronize(UpdateVariable);
end;
//------------------------------------------------------------------------------
procedure TIndyInAThread.UpdateVariable();
begin
ZMIENNA_GLOBALNA:=FCurrentNo;
end;
gdy z wątku przypisze jest ok, natomiast przez Synchronize to nie działa. I nie wiem jaka jest przyczyna.
Czytałem, że jednak musze użyć Synchronize dla bezpieczeństwa.