【更新内容】
1、EnumJobStates 函数用于枚举所有作业的状态,并返回一个作业状态的动态数组。
/// <summary>枚举所有的作业状态</summary> /// <returns>返回作业状态列表</summary> /// <remarks>在移动平台,如果使用了匿名函数作业过程,必需调用 ClearJobStates 函数来执行清理过程</remarks> function EnumJobStates: TQJobStateArray;
2、PeekJobState 函数用于检查特定作业的状态,如果未找到该作业,则返回False。
/// <summary>获取指定作业的状态</summary> /// <param name="AHandle">作业对象句柄</param> /// <param name="AResult">作业对象状态</param> /// <returns>如果指定的作业存在,则返回True,否则,返回False</returns> /// <remarks> /// 1.对于只执行一次的作业,在执行完后不复存在,所以也会返回false /// 2.在移动平台,如果使用了匿名函数作业过程,必需调用 ClearJobState 函数来执行清理过程,以避免内存泄露。 /// </remarks> function PeekJobState(AHandle: IntPtr; var AResult: TQJobState): Boolean;
TQJobState 结构用于记录作业的状态信息,其定义如下:
TQJobState = record Handle: IntPtr; // 作业对象句柄 Proc: TQJobMethod; // 作业过程 Flags: Integer; // 标志位 IsRunning: Boolean; // 是否在运行中,如果为False,则作业处于队列中 Runs: Integer; // 已经运行的次数 EscapedTime: Int64; // 已经执行时间 PushTime: Int64; // 入队时间 PopTime: Int64; // 出队时间 AvgTime: Int64; // 平均时间 TotalTime: Int64; // 总执行时间 MaxTime: Int64; // 最大执行时间 MinTime: Int64; // 最小执行时间 NextTime: Int64; // 重复作业的下次执行时间 end;
注意:在移动平台使用这两个函数时,要注意调用相应的方法清理由于匿名函数而可能造成的引用问题。
其示例代码可以直接参考QWorkerDemo里的两个例子,效果如下:
【更新级别】
可选