public void Work(int interval = 5) { try { Startup(); while (true) { if (Shutdown) break; if (Pause) { Thread.Sleep(TimeSpan.FromSeconds(5)); continue; } var job = Reserve(); if (job != null) { SetWorkingOn(job); System.Threading.Tasks.Task.Factory.StartNew(() => Process(job)).Wait(); DoneWorking(); } else { if (interval == 0) break; Thread.Sleep(TimeSpan.FromSeconds(interval)); } } } finally { UnregisterWorker(); } }
public System.Threading.Tasks.Task WorkAsync(params string[] queues) { var worker = new Worker(JobCreator, FailureService, Client, queues); Workers.Add(worker); return System.Threading.Tasks.Task.Factory.StartNew(() => worker.Work()); }