Hallo himitsu,
mal sehen ob ich dich richtig verstanden habe. In beiden deiner Beispiele ist die Methode innerhalb des Threads verankert und wird ausgeführt. Daraus entnehme ich, es ist nicht möglich die Methode ReverseString(s) dem Thread zu übergeben. Für mein Projekt bedeutet das, wenn wir bei CreateAnonymousThread bleiben wollen, ich müsste jede Methode die der DataSnap Server bereitstellt umkapseln mit dem CreateAnonymousThread?
Also etwa so:
//Jede DataSnap Methode muss ich also so verpacken. Ich kann die DataSnap Methode einem Thread nicht übergeben!
Delphi-Quellcode:
procedure GetAdress_ViaThread(const AdressID: integer);
begin
TThread.CreateAnonymousThread(procedure
begin
CheckDataSnapConnection;
if FutureDSConneced.value //Thread wird blockiert bis Antwort kommt. FutureDSConneced ist eine globale public Variable vom Typ FutureDSConneced: IFuture<boolean>;
then GetAdress(AdressID);
end).Start;
end;
Delphi-Quellcode:
procedure TForm1.CheckDataSnapConnection;
begin
FutureDSConneced := TTask.Future<boolean>(
function:boolean
begin
result := false;
try
dm1.DSRestConnection1.TestConnection();
result := true;
// dm1.DSRestConnection1.Reset;
except
on E:
Exception do
begin
HandleException(E);
end;
end;
end);
end;
Gruß Kostas