Delphi Future 执行异步请求并返回请求结果
Delphi Future 执行异步请求并返回请求结果
-
先添加线程引用单元 System.Threading
-
声明一个带返回值(string类型)的方法:传入一个字符串并返回一个字符串
function LogMsg( Msg : string):string; begin Result := '这是一段Future记录的日志' + Msg ; end; -
开启一个线程并执行方法
var th1 : TThread;
begin
th1 := TThread.CreateAnonymousThread(
procedure
var
Future : IFuture;
val : string;
begin
Future := Ttask.Future(
function : string
begin
Sleep(5000);
Result := LogMsg('1020-01'); //自己封装的带string返回值的方法
end);
val := Future.Value; //获取 Future的返回值
TThread.Synchronize(nil, //线程结束后处理返回的数据
procedure
begin
Memo1.Lines.Add(val);
end);
end);
th1.Start; //执行
将procdure当做方法参数执行封装统一异步请求
- 自定义函数
type
Tpro = procedure();
function MyThread(apro: Tpro): string;
var
th1: TThread;
begin
th1 := TThread.CreateAnonymousThread(
procedure
var
Future: IFuture;
val: string;
begin
Future := Ttask.Future(
function: string
begin
Sleep(5000);
//这里执行自定义方法
apro;
Result := LogMsg('消息内容是:'); //自己封装的带string返回值的方法
end);
val := Future.Value; //获取 Future的返回值
TThread.Synchronize(nil, //线程结束后处理返回的数据
procedure
begin
//Form3.Memo1.Lines.Add(val);
//Result := val;
end);
end);
th1.Start; //执行
end;