Exemple #1
0
        /// <summary>
        /// Shuts down the whole job executor </summary>
        public virtual void Shutdown()
        {
            lock (syncRoot)
            {
                if (!isActive)
                {
                    return;
                }

                logger.LogInformation($"Shutting down the default async job executor [{this.GetType().FullName}].");

                if (timerJobRunnable != null)
                {
                    timerJobRunnable.Stop();
                }
                if (asyncJobsDueRunnable != null)
                {
                    asyncJobsDueRunnable.Stop();
                }
                if (resetExpiredJobsRunnable != null)
                {
                    resetExpiredJobsRunnable.Stop();
                }

                StopResetExpiredJobsThread();
                StopTimerAcquisitionThread();
                StopJobAcquisitionThread();
                StopExecutingAsyncJobs();

                timerJobRunnable         = null;
                asyncJobsDueRunnable     = null;
                resetExpiredJobsRunnable = null;

                isActive = false;
            }
        }