IScheduledTaskProperties.Queueing

Syntax

Queueing: Boolean;

Description

The Queueing property determines whether the task is launched when the previous instance of the same task is not completed. If the value is True, the task is not launched until the previous instance is not completed, if False, the task is launched in any case.

NOTE. In case if one or more of its next launching are missed when executing the task, they will be performed in turn.

Example

Executing the example requires that the repository contains a scheduled tasks container with the TASK_CONTAINTER identifier and a unit with the Module_1 identifier. The unit contains the Main procedure.

Sub UserProc;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    Exe: IExecuteSubScheduledTask;Per: IScheduledTaskPeriodDaily;
    Prop: IScheduledTaskProperties;
    Date: DateTime;
Begin
    MB := MetabaseClass.Active;
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_TASK_EXECUTESUB;
    CrInfo.Id := "MODULE_EXECUTOR";
    CrInfo.Name := "Unit execution";
    CrInfo.Parent := MB.ItemById("TASK_CONTAINTER");
    MObj := MB.CreateObject(CrInfo).Edit;
    Exe := MObj As IExecuteSubScheduledTask;
    Exe.Assembly := (MB.ItemById("Module_1").Bind As IModule).Assembly;
    Exe.SubName := "Main";
    Prop := Exe.Properties;
    Per := Prop.CreatePeriod(ScheduledTaskPeriodType.Daily) As IScheduledTaskPeriodDaily;
    Per.EveryDays := 3;
    Date := DateTime.Now;
    Per.StartDateTime := Date.Compose(Date.Year, Date.Month, Date.Day, 12000);
    Per.StopDateTime := DateTime.AddMonths(Per.StartDateTime, 2);
    Prop.Period := Per;
    Prop.Queueing:=True;
    MObj.Save;
End Sub UserProc;

After executing the example a new task of unit execution is created in the scheduled tasks container. The unit will be running every three days at 12:00 during two months. The task will not be launched, until the previous instance of the same task is completed.

See also:

IScheduledTaskProperties