Example #1
0
 protected virtual void StartReadySubJobs()
 {
     foreach (ISubJob subJob in SubJobs.Where(sjb => sjb.Status == JobStatus.Ready))
     {
         subJob.StartAsync();
     }
 }
Example #2
0
 protected virtual void CheckSubJobReadiness()
 {
     foreach (ISubJob subJob in SubJobs.Where(sjb => sjb.Status == JobStatus.OnQueue))
     {
         subJob.CheckStatus();
     }
 }
Example #3
0
 protected virtual void CycleSubJobs()
 {
     try
     {
         if (SubJobs.All(sjb => sjb.Status == JobStatus.Completed || sjb.Status == JobStatus.Failed))
         {
             Complete();
         }
         else
         {
             CheckSubJobReadiness();
             if (!SubJobs.Any(sjb => sjb.Status == JobStatus.Ready || sjb.Status == JobStatus.Running))
             {
                 throw new Exception("No ready subjobs, check for circular dependencies.");
             }
             StartReadySubJobs();
         }
     }
     catch (Exception e)
     {
         RaiseSyncError(e);
     }
 }