private static async Task ProcessJobs(List <ClientJob> allJobs) { Log($"ProcessJobs"); var whenLastJobCompleted = DateTime.MinValue; for (int i = 0; i < allJobs.Count(); i++) { var job = allJobs[i]; Log($"jod ID: {job.Id}, State: {job.State}"); // TODO: to remove, only for debug Log($"{job.State} {job.TransportType}"); if (job.State == ClientState.Waiting) { Log($"Starting SignalR worker"); job.State = ClientState.Starting; try { BaseWorker worker = WorkerFactory.CreateWorker(job); if (worker == null) { Log($"Error while creating the worker"); job.State = ClientState.Deleting; whenLastJobCompleted = DateTime.UtcNow; } else { var processJobTask = worker.ProcessJobAsync(); Task.WaitAll(processJobTask); Thread.Sleep(100); } } catch (Exception e) { Log($"An unexpected error occured while starting the job {job.Id}"); Log(e.ToString()); } } } }