From 146f7edec1573962d551b716394055b03f1eaafd Mon Sep 17 00:00:00 2001 From: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:46:59 +0200 Subject: [PATCH 1/9] Add polyfills for `Task.Run(...)`, `Task.WhenAny(...)` and `Task.WhenAll(...)` --- PolyShim/NetCore10/Task.cs | 66 ++++++++++++++++++++++++++++++++++++++ PolyShim/Signatures.md | 20 ++++++++++-- 2 files changed, 84 insertions(+), 2 deletions(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index 014014f..192ca69 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -6,6 +6,10 @@ // ReSharper disable InconsistentNaming // ReSharper disable PartialTypeWithSinglePart +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; using System.Threading.Tasks; internal static partial class PolyfillExtensions @@ -26,6 +30,68 @@ internal static partial class PolyfillExtensions return tcs.Task; } + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action-system-threading-cancellationtoken) + public static Task Run(Action action, CancellationToken cancellationToken) => + Task.Factory.StartNew(action, cancellationToken); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action) + public static Task Run(Action action) => Task.Factory.StartNew(action); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))-system-threading-cancellationtoken) + public static Task Run(Func function, CancellationToken cancellationToken) => + Task.Factory.StartNew(function, cancellationToken).Unwrap(); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))) + public static Task Run(Func function) => Task.Factory.StartNew(function).Unwrap(); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0))-system-threading-cancellationtoken) + public static Task Run(Func function, CancellationToken cancellationToken) => + Task.Factory.StartNew(function, cancellationToken); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0))) + public static Task Run(Func function) => Task.Factory.StartNew(function); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0))))-system-threading-cancellationtoken) + public static Task Run(Func> function, CancellationToken cancellationToken) => + Task.Factory.StartNew(function, cancellationToken).Unwrap(); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0))))) + public static Task Run(Func> function) => + Task.Factory.StartNew(function).Unwrap(); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-collections-generic-ienumerable((system-threading-tasks-task))) + public static Task WhenAll(IEnumerable tasks) => + Task.Factory.ContinueWhenAll(tasks as Task[] ?? tasks.ToArray(), _ => { }); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-threading-tasks-task()) + public static Task WhenAll(params Task[] tasks) => WhenAll((IEnumerable)tasks); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall-1(system-collections-generic-ienumerable((system-threading-tasks-task((-0))))) + public static Task WhenAll(IEnumerable> tasks) => + Task.Factory.ContinueWhenAll( + tasks as Task[] ?? tasks.ToArray(), + completedTasks => completedTasks.Select(t => t.Result).ToArray() + ); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall-1(system-threading-tasks-task((-0))()) + public static Task WhenAll(params Task[] tasks) => + WhenAll((IEnumerable>)tasks); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany(system-collections-generic-ienumerable((system-threading-tasks-task))) + public static Task WhenAny(IEnumerable tasks) => + Task.Factory.ContinueWhenAny(tasks as Task[] ?? tasks.ToArray(), t => t); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany(system-threading-tasks-task()) + public static Task WhenAny(params Task[] tasks) => WhenAny((IEnumerable)tasks); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany-1(system-collections-generic-ienumerable((system-threading-tasks-task((-0))))) + public static Task> WhenAny(IEnumerable> tasks) => + Task.Factory.ContinueWhenAny(tasks as Task[] ?? tasks.ToArray(), t => t); + + // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany-1(system-threading-tasks-task((-0))()) + public static Task> WhenAny(params Task[] tasks) => + WhenAny((IEnumerable>)tasks); #endif } } diff --git a/PolyShim/Signatures.md b/PolyShim/Signatures.md index 0a47e23..42ef5d0 100644 --- a/PolyShim/Signatures.md +++ b/PolyShim/Signatures.md @@ -1,8 +1,8 @@ # Signatures -- **Total:** 275 +- **Total:** 291 - **Types:** 62 -- **Members:** 213 +- **Members:** 229 ___ @@ -335,10 +335,26 @@ ___ - [`IAsyncEnumerable WhenEach(IEnumerable)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.wheneach#system-threading-tasks-task-wheneach(system-collections-generic-ienumerable((system-threading-tasks-task)))) .NET 9.0 - [`IAsyncEnumerable WhenEach(params Task[])`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.wheneach#system-threading-tasks-task-wheneach(system-threading-tasks-task())) .NET 9.0 - [`Task CompletedTask`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.completedtask) .NET Core 1.0 + - [`Task Run(Action, CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action-system-threading-cancellationtoken)) .NET Core 1.0 + - [`Task Run(Action)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action)) .NET Core 1.0 + - [`Task Run(Func, CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))-system-threading-cancellationtoken)) .NET Core 1.0 + - [`Task Run(Func)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task)))) .NET Core 1.0 - [`Task WaitAsync(CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.waitasync#system-threading-tasks-task-waitasync(system-threading-cancellationtoken)) .NET 6.0 - [`Task WaitAsync(TimeSpan, CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.waitasync#system-threading-tasks-task-waitasync(system-timespan-system-threading-cancellationtoken)) .NET 6.0 - [`Task WaitAsync(TimeSpan)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.waitasync#system-threading-tasks-task-waitasync(system-timespan)) .NET 6.0 + - [`Task WhenAll(IEnumerable)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-collections-generic-ienumerable((system-threading-tasks-task)))) .NET Core 1.0 + - [`Task WhenAll(params Task[])`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-threading-tasks-task())) .NET Core 1.0 - [`Task FromResult(T?)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.fromresult) .NET Core 1.0 + - [`Task WhenAll(IEnumerable>)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall-1(system-collections-generic-ienumerable((system-threading-tasks-task((-0)))))) .NET Core 1.0 + - [`Task WhenAll(params Task[])`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall-1(system-threading-tasks-task((-0))())) .NET Core 1.0 + - [`Task Run(Func, CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0))-system-threading-cancellationtoken)) .NET Core 1.0 + - [`Task Run(Func)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0)))) .NET Core 1.0 + - [`Task Run(Func>, CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0))))-system-threading-cancellationtoken)) .NET Core 1.0 + - [`Task Run(Func>)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0)))))) .NET Core 1.0 + - [`Task> WhenAny(IEnumerable>)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany-1(system-collections-generic-ienumerable((system-threading-tasks-task((-0)))))) .NET Core 1.0 + - [`Task> WhenAny(params Task[])`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany-1(system-threading-tasks-task((-0))())) .NET Core 1.0 + - [`Task WhenAny(IEnumerable)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany(system-collections-generic-ienumerable((system-threading-tasks-task)))) .NET Core 1.0 + - [`Task WhenAny(params Task[])`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany(system-threading-tasks-task())) .NET Core 1.0 - `Task` - [`Task WaitAsync(CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1.waitasync#system-threading-tasks-task-1-waitasync(system-threading-cancellationtoken)) .NET 6.0 - [`Task WaitAsync(TimeSpan, CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1.waitasync#system-threading-tasks-task-1-waitasync(system-timespan-system-threading-cancellationtoken)) .NET 6.0 From 2d5f182ce98551c014a429c702643e57f591c232 Mon Sep 17 00:00:00 2001 From: Oleksii Holub <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:52:34 +0200 Subject: [PATCH 2/9] Update PolyShim/NetCore10/Task.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- PolyShim/NetCore10/Task.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index 192ca69..10913b0 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -36,7 +36,8 @@ public static Task Run(Action action, CancellationToken cancellationToken) => Task.Factory.StartNew(action, cancellationToken); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action) - public static Task Run(Action action) => Task.Factory.StartNew(action); + public static Task Run(Action action) => + Task.Factory.StartNew(action, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))-system-threading-cancellationtoken) public static Task Run(Func function, CancellationToken cancellationToken) => From d5f23a4122531ac6f88ae5dc9195b7d250c74566 Mon Sep 17 00:00:00 2001 From: Oleksii Holub <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:52:45 +0200 Subject: [PATCH 3/9] Update PolyShim/NetCore10/Task.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- PolyShim/NetCore10/Task.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index 10913b0..0c748d4 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -41,7 +41,7 @@ public static Task Run(Action action) => // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))-system-threading-cancellationtoken) public static Task Run(Func function, CancellationToken cancellationToken) => - Task.Factory.StartNew(function, cancellationToken).Unwrap(); + Task.Factory.StartNew(function, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))) public static Task Run(Func function) => Task.Factory.StartNew(function).Unwrap(); From 747f23959b89bbfc6b631e51e0c316691af3467a Mon Sep 17 00:00:00 2001 From: Oleksii Holub <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:53:04 +0200 Subject: [PATCH 4/9] Update PolyShim/NetCore10/Task.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- PolyShim/NetCore10/Task.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index 0c748d4..fc44e6b 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -44,22 +44,24 @@ public static Task Run(Func function, CancellationToken cancellationToken) Task.Factory.StartNew(function, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))) - public static Task Run(Func function) => Task.Factory.StartNew(function).Unwrap(); + public static Task Run(Func function) => + Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0))-system-threading-cancellationtoken) public static Task Run(Func function, CancellationToken cancellationToken) => - Task.Factory.StartNew(function, cancellationToken); + Task.Factory.StartNew(function, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0))) - public static Task Run(Func function) => Task.Factory.StartNew(function); + public static Task Run(Func function) => + Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0))))-system-threading-cancellationtoken) public static Task Run(Func> function, CancellationToken cancellationToken) => - Task.Factory.StartNew(function, cancellationToken).Unwrap(); + Task.Factory.StartNew(function, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0))))) public static Task Run(Func> function) => - Task.Factory.StartNew(function).Unwrap(); + Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-collections-generic-ienumerable((system-threading-tasks-task))) public static Task WhenAll(IEnumerable tasks) => From 1540f45f0a3c8cdcb4454eb75d51b8e0dc67e2ba Mon Sep 17 00:00:00 2001 From: Oleksii Holub <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:53:32 +0200 Subject: [PATCH 5/9] Update PolyShim/NetCore10/Task.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- PolyShim/NetCore10/Task.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index fc44e6b..6377af8 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -33,7 +33,7 @@ internal static partial class PolyfillExtensions // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action-system-threading-cancellationtoken) public static Task Run(Action action, CancellationToken cancellationToken) => - Task.Factory.StartNew(action, cancellationToken); + Task.Factory.StartNew(action, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action) public static Task Run(Action action) => From c90e51df698563eaf5b37d9266c6faa34e39c880 Mon Sep 17 00:00:00 2001 From: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:55:04 +0200 Subject: [PATCH 6/9] asd --- PolyShim/NetCore10/Task.cs | 42 +++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index 6377af8..ac2afc4 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -33,35 +33,57 @@ internal static partial class PolyfillExtensions // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action-system-threading-cancellationtoken) public static Task Run(Action action, CancellationToken cancellationToken) => - Task.Factory.StartNew(action, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); + Task.Factory.StartNew( + action, + cancellationToken, + TaskCreationOptions.None, + TaskScheduler.Default + ); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-action) - public static Task Run(Action action) => - Task.Factory.StartNew(action, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); + public static Task Run(Action action) => Task.Run(action, CancellationToken.None); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))-system-threading-cancellationtoken) public static Task Run(Func function, CancellationToken cancellationToken) => - Task.Factory.StartNew(function, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); + Task + .Factory.StartNew( + function, + cancellationToken, + TaskCreationOptions.None, + TaskScheduler.Default + ) + .Unwrap(); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run(system-func((system-threading-tasks-task))) - public static Task Run(Func function) => - Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); + public static Task Run(Func function) => Task.Run(function, CancellationToken.None); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0))-system-threading-cancellationtoken) public static Task Run(Func function, CancellationToken cancellationToken) => - Task.Factory.StartNew(function, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); + Task.Factory.StartNew( + function, + cancellationToken, + TaskCreationOptions.None, + TaskScheduler.Default + ); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((-0))) public static Task Run(Func function) => - Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); + Task.Run(function, CancellationToken.None); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0))))-system-threading-cancellationtoken) public static Task Run(Func> function, CancellationToken cancellationToken) => - Task.Factory.StartNew(function, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); + Task + .Factory.StartNew( + function, + cancellationToken, + TaskCreationOptions.None, + TaskScheduler.Default + ) + .Unwrap(); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.run#system-threading-tasks-task-run-1(system-func((system-threading-tasks-task((-0))))) public static Task Run(Func> function) => - Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default).Unwrap(); + Task.Run(function, CancellationToken.None); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-collections-generic-ienumerable((system-threading-tasks-task))) public static Task WhenAll(IEnumerable tasks) => From 47a6e0b8d39c7e8cc6fbaa9ce4bae2f48b3accb1 Mon Sep 17 00:00:00 2001 From: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 18:01:58 +0200 Subject: [PATCH 7/9] asd --- PolyShim/NetCore10/Task.cs | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index ac2afc4..b959dd6 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -87,7 +87,13 @@ public static Task Run(Func> function) => // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-collections-generic-ienumerable((system-threading-tasks-task))) public static Task WhenAll(IEnumerable tasks) => - Task.Factory.ContinueWhenAll(tasks as Task[] ?? tasks.ToArray(), _ => { }); + Task.Factory.ContinueWhenAll( + tasks as Task[] ?? tasks.ToArray(), + _ => { }, + CancellationToken.None, + TaskContinuationOptions.None, + TaskScheduler.Default + ); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall(system-threading-tasks-task()) public static Task WhenAll(params Task[] tasks) => WhenAll((IEnumerable)tasks); @@ -96,7 +102,10 @@ public static Task WhenAll(IEnumerable tasks) => public static Task WhenAll(IEnumerable> tasks) => Task.Factory.ContinueWhenAll( tasks as Task[] ?? tasks.ToArray(), - completedTasks => completedTasks.Select(t => t.Result).ToArray() + completedTasks => completedTasks.Select(t => t.Result).ToArray(), + CancellationToken.None, + TaskContinuationOptions.None, + TaskScheduler.Default ); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenall#system-threading-tasks-task-whenall-1(system-threading-tasks-task((-0))()) @@ -105,14 +114,26 @@ public static Task WhenAll(params Task[] tasks) => // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany(system-collections-generic-ienumerable((system-threading-tasks-task))) public static Task WhenAny(IEnumerable tasks) => - Task.Factory.ContinueWhenAny(tasks as Task[] ?? tasks.ToArray(), t => t); + Task.Factory.ContinueWhenAny( + tasks as Task[] ?? tasks.ToArray(), + t => t, + CancellationToken.None, + TaskContinuationOptions.None, + TaskScheduler.Default + ); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany(system-threading-tasks-task()) public static Task WhenAny(params Task[] tasks) => WhenAny((IEnumerable)tasks); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany-1(system-collections-generic-ienumerable((system-threading-tasks-task((-0))))) public static Task> WhenAny(IEnumerable> tasks) => - Task.Factory.ContinueWhenAny(tasks as Task[] ?? tasks.ToArray(), t => t); + Task.Factory.ContinueWhenAny( + tasks as Task[] ?? tasks.ToArray(), + t => t, + CancellationToken.None, + TaskContinuationOptions.None, + TaskScheduler.Default + ); // https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.whenany#system-threading-tasks-task-whenany-1(system-threading-tasks-task((-0))()) public static Task> WhenAny(params Task[] tasks) => From 552ce16943b331c76a73eb4fe00dd9690bc03c3c Mon Sep 17 00:00:00 2001 From: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 18:11:29 +0200 Subject: [PATCH 8/9] asd --- PolyShim/NetCore10/Task.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index b959dd6..d57f724 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -91,7 +91,7 @@ public static Task WhenAll(IEnumerable tasks) => tasks as Task[] ?? tasks.ToArray(), _ => { }, CancellationToken.None, - TaskContinuationOptions.None, + TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Default ); @@ -102,9 +102,9 @@ public static Task WhenAll(IEnumerable tasks) => public static Task WhenAll(IEnumerable> tasks) => Task.Factory.ContinueWhenAll( tasks as Task[] ?? tasks.ToArray(), - completedTasks => completedTasks.Select(t => t.Result).ToArray(), + completedTasks => completedTasks.Select(t => t.GetAwaiter().GetResult()).ToArray(), CancellationToken.None, - TaskContinuationOptions.None, + TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Default ); @@ -118,7 +118,7 @@ public static Task WhenAny(IEnumerable tasks) => tasks as Task[] ?? tasks.ToArray(), t => t, CancellationToken.None, - TaskContinuationOptions.None, + TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Default ); @@ -131,7 +131,7 @@ public static Task> WhenAny(IEnumerable> tasks) => tasks as Task[] ?? tasks.ToArray(), t => t, CancellationToken.None, - TaskContinuationOptions.None, + TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Default ); From d85e7c7d4bb04d687196f37524eebf4e052fee09 Mon Sep 17 00:00:00 2001 From: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Date: Tue, 2 Dec 2025 18:16:25 +0200 Subject: [PATCH 9/9] asd --- PolyShim/NetCore10/Task.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PolyShim/NetCore10/Task.cs b/PolyShim/NetCore10/Task.cs index d57f724..c23c87f 100644 --- a/PolyShim/NetCore10/Task.cs +++ b/PolyShim/NetCore10/Task.cs @@ -118,7 +118,7 @@ public static Task WhenAny(IEnumerable tasks) => tasks as Task[] ?? tasks.ToArray(), t => t, CancellationToken.None, - TaskContinuationOptions.OnlyOnRanToCompletion, + TaskContinuationOptions.None, TaskScheduler.Default ); @@ -131,7 +131,7 @@ public static Task> WhenAny(IEnumerable> tasks) => tasks as Task[] ?? tasks.ToArray(), t => t, CancellationToken.None, - TaskContinuationOptions.OnlyOnRanToCompletion, + TaskContinuationOptions.None, TaskScheduler.Default );