/// <summary> /// /// </summary> /// <param name="submittedTask"></param> public ScheduledTask(IRunnableTask submittedTask) { _submittedTask = submittedTask; TaskId = submittedTask.Id; _tokenSource = new CancellationTokenSource(); }
internal static void Start(STask stask, ITaskUpdateCallback callback) { try { //// Step 1.a //var rtasks = CompositionUtil.ContainerInstance.GetExports<IRunnableTask>(); //// Step 1.b //var rtask = from t in rtasks // where t.Value.GetType().FullName == stask.STaskTypeName // select t.Value; IRunnableTask rtask = null; switch (stask.STaskTypeName) { case "NumberOfEvenCTask": rtask = new NumberOfEvenCTask(); break; } if (rtask != null) { // Step 2 var cs = new CancellationTokenSource(); var ct = cs.Token; _cancellationSources.TryAdd(stask.Id, cs); // Step 3 Task <object> .Run(rtask.Run(ct, stask.STaskParameters), ct) .ContinueWith(tes => UpdateStatus(tes, stask, callback)); } } catch (Exception ex) { throw ex; } }
public void SubmitTask(IRunnableTask task) { var scheduledTask = new ScheduledTask(task); _scheduledTasks.Add(scheduledTask); }