Maximum concurrent downloads (too many crashes the application)

This commit is contained in:
2025-09-04 23:33:42 +02:00
parent b24308021b
commit 0cb239a4e6
2 changed files with 16 additions and 1 deletions

View File

@@ -49,6 +49,8 @@ public struct TrangaSettings()
public Dictionary<RequestType, int> RequestLimits { get; set; } = DefaultRequestLimits;
public string DownloadLanguage { get; set; } = "en";
public int MaxConcurrentDownloads { get; set; } = 5;
public static TrangaSettings Load()
{
@@ -109,4 +111,10 @@ public struct TrangaSettings()
this.DownloadLanguage = language;
Save();
}
public void SetMaxConcurrentDownloads(int value)
{
this.MaxConcurrentDownloads = value;
Save();
}
}

View File

@@ -24,8 +24,15 @@ public class StartNewChapterDownloadsWorker(TimeSpan? interval = null, IEnumerab
Log.Debug($"Found {missingChapters.Count} missing downloads.");
// Maximum Concurrent workers
int downloadWorkers = Tranga.GetRunningWorkers().Count(w => w.GetType() == typeof(DownloadChapterFromMangaconnectorWorker));
int amountNewWorkers = Math.Min(Tranga.Settings.MaxConcurrentDownloads, Tranga.Settings.MaxConcurrentDownloads - downloadWorkers);
Log.Debug($"{downloadWorkers} running download Workers. {amountNewWorkers} new download Workers.");
IEnumerable<MangaConnectorId<Chapter>> newDownloadChapters = missingChapters.Take(amountNewWorkers);
// Create new jobs
List<BaseWorker> newWorkers = missingChapters.Select(mcId => new DownloadChapterFromMangaconnectorWorker(mcId)).ToList<BaseWorker>();
List<BaseWorker> newWorkers = newDownloadChapters.Select(mcId => new DownloadChapterFromMangaconnectorWorker(mcId)).ToList<BaseWorker>();
return newWorkers.ToArray();
}