private static void InternalStartJob(Job job) { TaskDefinition td; var tokenSource = new CancellationTokenSource(); var ct = tokenSource.Token; if (job.Cancelled) tokenSource.Cancel(); var task = new Task<object>(() => { ct.ThrowIfCancellationRequested(); return new AppDomainLoader(job, ct).RunJob<object>(); }, ct); _startedJobs.GetOrAdd(job.Id, new TaskDefinition(task, tokenSource)); if (task.Status != TaskStatus.Canceled) { task.ContinueWith(t => _completedJobsDateTimes.GetOrAdd(job.Id, DateTime.Now)); task.Start(); } }
public void StartJob(Job job) { _queuedJobs.Enqueue(job); }