コード例 #1
0
        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());
                    }
                }
            }
        }