Esempio n. 1
0
        public void SetExitTasksEarly(bool exitTasksEarly)
        {
            if (ExitTasksEarly == exitTasksEarly)
            {
                return;
            }

            ExitTasksEarly = exitTasksEarly;

            if (exitTasksEarly)
            {
                Logger.Debug("ExitTasksEarly enabled.");

                lock (_lock)
                {
                    foreach (var task in PendingTasks)
                    {
                        task?.Cancel();
                    }

                    PendingTasks.Clear();

                    foreach (var task in SimilarTasks)
                    {
                        task?.Cancel();
                    }

                    SimilarTasks.Clear();
                }
            }
            else
            {
                Logger.Debug("ExitTasksEarly disabled.");
            }
        }
Esempio n. 2
0
        public void SetPauseWork(bool pauseWork, bool cancelExisting = false)
        {
            if (PauseWork == pauseWork)
            {
                return;
            }

            if (cancelExisting)
            {
                lock (_lock)
                {
                    foreach (var task in PendingTasks)
                    {
                        task?.Cancel();
                    }

                    PendingTasks.Clear();

                    foreach (var task in SimilarTasks)
                    {
                        task?.Cancel();
                    }

                    SimilarTasks.Clear();
                }
            }

            PauseWork = pauseWork;

            if (pauseWork)
            {
                Logger.Debug("SetPauseWork enabled.");
            }
            else
            {
                Logger.Debug("SetPauseWork disabled.");
                TakeFromPendingTasksAndRun();
            }
        }