public void ProcessJobs()
        {
            IJobsRepository jobsRepository = new JobsRepository(_ctx);
            var             allJobs        = jobsRepository.GetAllJobs();
            var             jobsToProcess  = allJobs.Where(x => x.Status == JobStatus.New).ToList();

            jobsToProcess.ForEach(job => job.ChangeStatus(JobStatus.InProgress));

            _ctx.SaveChanges();

            Parallel.ForEach(jobsToProcess, (currentjob) =>
            {
                new Task(async() =>
                {
                    bool result = await this.ProcessJob(currentjob).ConfigureAwait(false);
                    if (result)
                    {
                        currentjob.ChangeStatus(JobStatus.Done);
                    }
                    else
                    {
                        _ctx.SaveChanges();
                        currentjob.ChangeStatus(JobStatus.Failed);
                    }
                }).Start();
            });

            _ctx.SaveChanges();
        }
 // GET: Tasks
 public ActionResult Index()
 {
     using (ZavenDotNetInterviewContext _ctx = new ZavenDotNetInterviewContext())
     {
         JobsRepository jobsRepository = new JobsRepository(_ctx);
         List <Job>     jobs           = jobsRepository.GetAllJobs();
         return(View(jobs));
     }
 }
示例#3
0
        // GET: Home
        public ActionResult Index()
        {
            JobsRepository jobsIO = new JobsRepository();

            return(View(jobsIO.GetAllJobs()));
        }