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 SetExitTasksEarly(bool exitTasksEarly)
        {
            if (ExitTasksEarly == exitTasksEarly)
                return;

            ExitTasksEarly = exitTasksEarly;

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

                lock (_pendingTasksLock)
                {
                    foreach (var task in PendingTasks.ToList())
                        // FMT: here we need a copy since cancelling will trigger them to be removed, hence collection is modified during enumeration
                        task.ImageLoadingTask.Cancel();

                    PendingTasks.Clear();
                }
            }
            else
            {
                Logger.Debug("ExitTasksEarly disabled.");
            }
        }
Esempio n. 3
0
        public void SetPauseWork(bool pauseWork)
        {
            if (_pauseWork == pauseWork)
            {
                return;
            }

            _pauseWork = pauseWork;

            if (pauseWork)
            {
                Logger.Debug("SetPauseWork paused.");

                lock (_pendingTasksLock)
                {
                    foreach (var task in PendingTasks.ToList()) // FMT: here we need a copy since cancelling will trigger them to be removed, hence collection is modified during enumeration
                    {
                        task.ImageLoadingTask.Cancel();
                    }

                    PendingTasks.Clear();
                }
            }

            if (!pauseWork)
            {
                Logger.Debug("SetPauseWork released.");
            }
        }
Esempio n. 4
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();
            }
        }