public void ProcessQueue() { try { lock (_lockObj) { using (var dbFactory = new DatabaseFactory()) { var repository = new TaskQueueRepository(dbFactory); var tasks = repository.GetTasksToRun(); foreach (var task in tasks) { var baseTask = _taskFactory.CreateTask(task.TaskTypeEnum); baseTask.Load(task); System.Threading.Tasks.Task.Factory.StartNew(baseTask.Run); } } } } catch (Exception ex) { Logger.WriteError(ex); } }