uses System.Classes, System.SysUtils;
function Add(A, B: Integer): Integer;
begin
Sleep(3000);
Result := A + B;
end;
var
Thread: TThread;
begin
Thread := TThread.CreateAnonymousThread(
procedure
begin
WriteLn('result: ', Add(3, 5));
end);
Thread.FreeOnTerminate := False;
Thread.Start;
WriteLn('main thread');
Thread.WaitFor;
Thread.Free;
//printed:
//main thread
//result: 8
end.