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."); } }
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."); } }
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."); } }
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(); } }