From 650618b5ab51bed1802223db034b36986d1fc5a5 Mon Sep 17 00:00:00 2001 From: gewuyou <95328647+GeWuYou@users.noreply.github.com> Date: Mon, 27 Apr 2026 08:09:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(core-tests):=20=E4=BF=AE=E5=A4=8D=20PauseSt?= =?UTF-8?q?ackManagerTests=20=E9=94=81=E5=88=86=E6=9E=90=E5=99=A8=E8=AD=A6?= =?UTF-8?q?=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 PauseStackManagerTests 并发测试中的锁声明,针对 net9 以上使用专用 Lock。 - 保持 net8.0 回退到 object 锁,确保多目标兼容且测试行为不变。 --- .../Concurrency/AsyncKeyLockManagerTests.cs | 42 ++++++++++++------- .../Pause/PauseStackManagerTests.cs | 4 ++ 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/GFramework.Core.Tests/Concurrency/AsyncKeyLockManagerTests.cs b/GFramework.Core.Tests/Concurrency/AsyncKeyLockManagerTests.cs index 4709a5bd..b65ab2a8 100644 --- a/GFramework.Core.Tests/Concurrency/AsyncKeyLockManagerTests.cs +++ b/GFramework.Core.Tests/Concurrency/AsyncKeyLockManagerTests.cs @@ -47,9 +47,11 @@ public sealed class AsyncKeyLockManagerTests var index = i; tasks.Add(Task.Run(async () => { - await using var handle = await manager.AcquireLockAsync("same-key").ConfigureAwait(false); - executionOrder.Add(index); - await Task.Delay(10).ConfigureAwait(false); + await using ((await manager.AcquireLockAsync("same-key").ConfigureAwait(false)).ConfigureAwait(false)) + { + executionOrder.Add(index); + await Task.Delay(10).ConfigureAwait(false); + } })); } @@ -75,11 +77,13 @@ public sealed class AsyncKeyLockManagerTests var key = $"key-{i}"; tasks.Add(Task.Run(async () => { - await using var handle = await manager.AcquireLockAsync(key).ConfigureAwait(false); - var current = Interlocked.Increment(ref concurrentCount); - maxConcurrent = Math.Max(maxConcurrent, current); - await Task.Delay(50).ConfigureAwait(false); - Interlocked.Decrement(ref concurrentCount); + await using ((await manager.AcquireLockAsync(key).ConfigureAwait(false)).ConfigureAwait(false)) + { + var current = Interlocked.Increment(ref concurrentCount); + maxConcurrent = Math.Max(maxConcurrent, current); + await Task.Delay(50).ConfigureAwait(false); + Interlocked.Decrement(ref concurrentCount); + } })); } @@ -117,8 +121,10 @@ public sealed class AsyncKeyLockManagerTests var key = $"key-{i % 10}"; tasks.Add(Task.Run(async () => { - await using var handle = await manager.AcquireLockAsync(key).ConfigureAwait(false); - await Task.Delay(1).ConfigureAwait(false); + await using ((await manager.AcquireLockAsync(key).ConfigureAwait(false)).ConfigureAwait(false)) + { + await Task.Delay(1).ConfigureAwait(false); + } })); } @@ -139,10 +145,12 @@ public sealed class AsyncKeyLockManagerTests { tasks.Add(Task.Run(async () => { - await using var handle = await manager.AcquireLockAsync("same-key").ConfigureAwait(false); - var temp = counter; - await Task.Delay(1).ConfigureAwait(false); - counter = temp + 1; + await using ((await manager.AcquireLockAsync("same-key").ConfigureAwait(false)).ConfigureAwait(false)) + { + var temp = counter; + await Task.Delay(1).ConfigureAwait(false); + counter = temp + 1; + } })); } @@ -295,8 +303,10 @@ public sealed class AsyncKeyLockManagerTests { for (var j = 0; j < 10; j++) { - await using var handle = await manager.AcquireLockAsync($"key-{j % 5}").ConfigureAwait(false); - await Task.Delay(10).ConfigureAwait(false); + await using ((await manager.AcquireLockAsync($"key-{j % 5}").ConfigureAwait(false)).ConfigureAwait(false)) + { + await Task.Delay(10).ConfigureAwait(false); + } } })); } diff --git a/GFramework.Core.Tests/Pause/PauseStackManagerTests.cs b/GFramework.Core.Tests/Pause/PauseStackManagerTests.cs index 8ad83233..fa870b59 100644 --- a/GFramework.Core.Tests/Pause/PauseStackManagerTests.cs +++ b/GFramework.Core.Tests/Pause/PauseStackManagerTests.cs @@ -431,7 +431,11 @@ public class PauseStackManagerTests { var tasks = new List(); var tokens = new List(); +#if NET9_0_OR_GREATER + var lockObj = new System.Threading.Lock(); +#else var lockObj = new object(); +#endif for (int i = 0; i < 100; i++) {