public Job Queue(Action<JobStatus> action)
{
var job = new Job { Id = Guid.NewGuid(), Started = false, Status = new JobStatus() };
var guard = new object();
ThreadPool.QueueUserWorkItem(o =>
{
lock (guard)
job.Started = true;
action(job.Status);
lock (guard)
{
job.Status.SetProgess(1, "Done");
job.Complete = true;
}
});
_jobs[job.Id] = job;
return job;
}