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()); }