From ed8d296e8dd89701b2975753cf8e8645e4f10e88 Mon Sep 17 00:00:00 2001 From: Salvador Cipolla Date: Sat, 11 Apr 2026 18:43:17 -0300 Subject: [PATCH] Parallel.ForEachAsync Doesn't Wire CancellationToken (M15 fix) --- Knossos.NET/ViewModels/Templates/Tasks/InstallBuild.cs | 2 +- Knossos.NET/ViewModels/Templates/Tasks/InstallMod.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Knossos.NET/ViewModels/Templates/Tasks/InstallBuild.cs b/Knossos.NET/ViewModels/Templates/Tasks/InstallBuild.cs index 0462e205..ae8dba78 100644 --- a/Knossos.NET/ViewModels/Templates/Tasks/InstallBuild.cs +++ b/Knossos.NET/ViewModels/Templates/Tasks/InstallBuild.cs @@ -198,7 +198,7 @@ public partial class TaskItemViewModel : ViewModelBase -Increase main progress when: File starts to download, File finishes downloading, Decompression starts, Decompression ends, Image download completed */ - await Parallel.ForEachAsync(files, new ParallelOptions { MaxDegreeOfParallelism = Knossos.globalSettings.maxConcurrentSubtasks }, async (file, token) => + await Parallel.ForEachAsync(files, new ParallelOptions { MaxDegreeOfParallelism = Knossos.globalSettings.maxConcurrentSubtasks, CancellationToken = cancellationTokenSource.Token }, async (file, token) => { if (cancellationTokenSource.IsCancellationRequested) { diff --git a/Knossos.NET/ViewModels/Templates/Tasks/InstallMod.cs b/Knossos.NET/ViewModels/Templates/Tasks/InstallMod.cs index 03011a18..180a35e7 100644 --- a/Knossos.NET/ViewModels/Templates/Tasks/InstallMod.cs +++ b/Knossos.NET/ViewModels/Templates/Tasks/InstallMod.cs @@ -308,7 +308,7 @@ public async Task InstallMod(Mod mod, CancellationTokenSource cancelSource File starts to download, File finishes downloading, Decompression starts, Decompression ends, Image download completed */ mod.fullPath = modPath + Path.DirectorySeparatorChar; - await Parallel.ForEachAsync(files, new ParallelOptions { MaxDegreeOfParallelism = Knossos.globalSettings.maxConcurrentSubtasks }, async (file, token) => + await Parallel.ForEachAsync(files, new ParallelOptions { MaxDegreeOfParallelism = Knossos.globalSettings.maxConcurrentSubtasks, CancellationToken = cancellationTokenSource.Token }, async (file, token) => { if (cancellationTokenSource.IsCancellationRequested) {