From f74d209fcad41f8c15fcf4190f1944d53db34372 Mon Sep 17 00:00:00 2001 From: Oleksandr Poliakov Date: Tue, 27 Feb 2024 11:26:57 -0800 Subject: [PATCH] Make ThreadingUtilities.ExecuteTasksOnNewThreads await on the operation completion. --- tests/MongoDB.Bson.TestHelpers/Threading/TasksUtils.cs | 9 +++++++++ .../Threading/ThreadingUtilities.cs | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/MongoDB.Bson.TestHelpers/Threading/TasksUtils.cs b/tests/MongoDB.Bson.TestHelpers/Threading/TasksUtils.cs index ca9676217e4..9f8fd0323c3 100644 --- a/tests/MongoDB.Bson.TestHelpers/Threading/TasksUtils.cs +++ b/tests/MongoDB.Bson.TestHelpers/Threading/TasksUtils.cs @@ -45,6 +45,15 @@ public static Task[] CreateTasksOnOwnThread(int count, Func functi new ThreadPerTaskScheduler())) .ToArray(); + public static Task[] RunTasksOnOwnThread(int count, Func taskCreator, CancellationToken cancellationToken = default) => + Enumerable.Range(0, count) + .Select(i => Task.Factory.StartNew( + () => taskCreator(i), + cancellationToken, + TaskCreationOptions.None, + new ThreadPerTaskScheduler()).Unwrap()) + .ToArray(); + public static Task[] CreateTasks(int count, Func> taskCreator) => Enumerable.Range(0, count) .Select(i => taskCreator(i)) diff --git a/tests/MongoDB.Bson.TestHelpers/Threading/ThreadingUtilities.cs b/tests/MongoDB.Bson.TestHelpers/Threading/ThreadingUtilities.cs index e774598c42b..b0b97b6b809 100644 --- a/tests/MongoDB.Bson.TestHelpers/Threading/ThreadingUtilities.cs +++ b/tests/MongoDB.Bson.TestHelpers/Threading/ThreadingUtilities.cs @@ -92,7 +92,7 @@ public static async Task ExecuteTasksOnNewThreadsCollectExceptions( var exceptions = new ConcurrentBag(); var tasksExecutingCountEvent = new CountdownEvent(threadsCount); - var allTasks = TasksUtils.CreateTasksOnOwnThread(threadsCount, async i => + var allTasks = TasksUtils.RunTasksOnOwnThread(threadsCount, async i => { try {