QWorker 更新 – 简化多个参数传递时的处理

【更新内容】

TQJobExtData 扩展了一个新的构造函数,接受一个array of const 数组来传递多个参数。首先是构造函数:

constructor Create(const AParams: array of const); overload;

然后通过两个属性来访问其传入的参数:

  • ParamCount : 返回传进的参数个数
  • Params[AIndex:Integer] : 返回第 AIndex 个参数的值(类型为Variant)

由于指针类型不受 Variant 的默认支持,所以转换时做了一些处理,将其转换为32位整数(32位平台)或64位整数(64位平台),在访问时请特别注意。

下面是一段多参数调用的例子,使用了匿名函数版本的作业,仅供参考:

Workers.Post(
  procedure(AJob: PQJob)
  var
    I:Integer;
    S:String;
  begin
  S:='Name='+AJob.ExtData.Params[0]+#13#10+
    'Age='+IntToStr(AJob.ExtData.Params[1])+#13#10+
    'Type='+AJob.ExtData.Params[2];
  ShowMessage(S);
  end, 
  TQJobExtData.Create(['Jody',28,'Boy']),
  true, 
  jdfFreeAsObject);

另外需要注意参数的顺序和访问时要保证一致,否则,后果不是我要负责的。

【更新级别】

可选

【特别感谢】

猫叔、芒果

分享到: