From a0469f3145c3ce399b92fd34ddaeaa7417de3f10 Mon Sep 17 00:00:00 2001 From: glax Date: Sun, 11 Jun 2023 19:16:05 +0200 Subject: [PATCH] Cancel DownloadChapter-Task on removal --- Tranga/TaskManager.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Tranga/TaskManager.cs b/Tranga/TaskManager.cs index 4cc57f5..bf028f4 100644 --- a/Tranga/TaskManager.cs +++ b/Tranga/TaskManager.cs @@ -207,7 +207,10 @@ public class TaskManager logger?.WriteLine(this.GetType().ToString(), $"Removing Task {removeTask}"); _allTasks.Remove(removeTask); if (removeTask.GetType() == typeof(DownloadChapterTask)) + { + _runningDownloadChapterTasks[(DownloadChapterTask)removeTask].Cancel(); _runningDownloadChapterTasks.Remove((DownloadChapterTask)removeTask); + } } public TrangaTask? AddTask(TrangaTask.Task taskType, string? connectorName, string? internalId, @@ -263,11 +266,12 @@ public class TaskManager _allTasks.RemoveWhere(mTask => mTask.GetType() == typeof(DownloadNewChaptersTask) && ((DownloadNewChaptersTask)mTask).publication.internalId == publicationId && - ((DownloadNewChaptersTask)mTask).connectorName == connectorName!); - _allTasks.RemoveWhere(mTask => - mTask.GetType() == typeof(DownloadChapterTask) && - ((DownloadChapterTask)mTask).publication.internalId == publicationId && - ((DownloadChapterTask)mTask).connectorName == connectorName!); + ((DownloadNewChaptersTask)mTask).connectorName == connectorName); + foreach(TrangaTask rTask in _allTasks.Where(mTask => + mTask.GetType() == typeof(DownloadChapterTask) && + ((DownloadChapterTask)mTask).publication.internalId == publicationId && + ((DownloadChapterTask)mTask).connectorName == connectorName)) + DeleteTask(rTask); } break; }