diff --git a/Tranga/TaskManager.cs b/Tranga/TaskManager.cs index 14b3a89..7010c02 100644 --- a/Tranga/TaskManager.cs +++ b/Tranga/TaskManager.cs @@ -124,7 +124,7 @@ public class TaskManager foreach (KeyValuePair removeTask in _runningDownloadChapterTasks) { if (removeTask.Key.GetType() == typeof(DownloadChapterTask) && - DateTime.Now.Subtract(removeTask.Key.executionStarted) > TimeSpan.FromMinutes(10))//TODO better way to check if task has failed? + DateTime.Now.Subtract(removeTask.Key.lastChange) > TimeSpan.FromMinutes(3))//3 Minutes since last update to task -> remove { logger?.WriteLine(this.GetType().ToString(), $"Removing failed task {removeTask}."); removeTask.Value.Dispose(); diff --git a/Tranga/TrangaTask.cs b/Tranga/TrangaTask.cs index a08c6d0..a0d51ec 100644 --- a/Tranga/TrangaTask.cs +++ b/Tranga/TrangaTask.cs @@ -23,7 +23,7 @@ public abstract class TrangaTask [Newtonsoft.Json.JsonIgnore]public ExecutionState state { get; set; } [Newtonsoft.Json.JsonIgnore]public float progress { get; protected set; } [Newtonsoft.Json.JsonIgnore]public DateTime nextExecution => lastExecuted.Add(reoccurrence); - [Newtonsoft.Json.JsonIgnore]public DateTime executionStarted { get; protected set; } + [Newtonsoft.Json.JsonIgnore]public DateTime executionStarted { get; private set; } [Newtonsoft.Json.JsonIgnore] public DateTime executionApproximatelyFinished => this.progress != 0 @@ -32,6 +32,8 @@ public abstract class TrangaTask [Newtonsoft.Json.JsonIgnore] public TimeSpan executionApproximatelyRemaining => this.executionApproximatelyFinished.Subtract(DateTime.Now); + + [Newtonsoft.Json.JsonIgnore]public DateTime lastChange { get; protected set; } public enum ExecutionState { @@ -47,11 +49,13 @@ public abstract class TrangaTask this.task = task; this.progress = 0f; this.executionStarted = DateTime.Now; + this.lastChange = DateTime.Now; } public float IncrementProgress(float amount) { this.progress += amount; + this.lastChange = DateTime.Now; return this.progress; } diff --git a/Tranga/TrangaTasks/DownloadChapterTask.cs b/Tranga/TrangaTasks/DownloadChapterTask.cs index e9dda7c..f424ed4 100644 --- a/Tranga/TrangaTasks/DownloadChapterTask.cs +++ b/Tranga/TrangaTasks/DownloadChapterTask.cs @@ -30,6 +30,7 @@ public class DownloadChapterTask : TrangaTask public new float IncrementProgress(float amount) { this.progress += amount; + this.lastChange = DateTime.Now; parentTask?.IncrementProgress(amount); return this.progress; } diff --git a/Tranga/TrangaTasks/DownloadNewChaptersTask.cs b/Tranga/TrangaTasks/DownloadNewChaptersTask.cs index 2f5f2d5..6db6572 100644 --- a/Tranga/TrangaTasks/DownloadNewChaptersTask.cs +++ b/Tranga/TrangaTasks/DownloadNewChaptersTask.cs @@ -21,6 +21,7 @@ public class DownloadNewChaptersTask : TrangaTask public new float IncrementProgress(float amount) { this.progress += amount / this.childTaskAmount; + this.lastChange = DateTime.Now; return this.progress; }