From bc48dfd5541812b792b5a5c6da70214f7ea44035 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 25 Apr 2025 15:20:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=A7=BB=E9=99=A4=20Task.Run=20=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Timer/Timer.razor.cs | 76 +++++++++---------- 1 file changed, 35 insertions(+), 41 deletions(-) diff --git a/src/BootstrapBlazor/Components/Timer/Timer.razor.cs b/src/BootstrapBlazor/Components/Timer/Timer.razor.cs index e6449af01ab..f739e9373ca 100644 --- a/src/BootstrapBlazor/Components/Timer/Timer.razor.cs +++ b/src/BootstrapBlazor/Components/Timer/Timer.razor.cs @@ -168,7 +168,7 @@ private async Task Timeout() } } - private Task OnStart(TimeSpan val) + private async Task OnStart(TimeSpan val) { Value = val; IsPause = false; @@ -176,60 +176,54 @@ private Task OnStart(TimeSpan val) AlertTime = DateTime.Now.Add(CurrentTimespan).ToString("HH:mm:ss"); StateHasChanged(); + await Task.Yield(); - _ = Task.Run(async () => + // 点击 Cancel 后重新设置再点击 Star + if (CancelTokenSource.IsCancellationRequested) { - // 点击 Cancel 后重新设置再点击 Star - if (CancelTokenSource.IsCancellationRequested) + CancelTokenSource.Dispose(); + CancelTokenSource = new CancellationTokenSource(); + } + + while (!CancelTokenSource.IsCancellationRequested && CurrentTimespan > TimeSpan.Zero) + { + try { - CancelTokenSource.Dispose(); - CancelTokenSource = new CancellationTokenSource(); + await Task.Delay(1000, CancelTokenSource.Token); } + catch (TaskCanceledException) { } - while (!CancelTokenSource.IsCancellationRequested && CurrentTimespan > TimeSpan.Zero) + if (!CancelTokenSource.IsCancellationRequested) { - try - { - await Task.Delay(1000, CancelTokenSource.Token); - } - catch (TaskCanceledException) { } - - if (!CancelTokenSource.IsCancellationRequested) - { - CurrentTimespan = CurrentTimespan.Subtract(TimeSpan.FromSeconds(1)); - await InvokeAsync(StateHasChanged); - } + CurrentTimespan = CurrentTimespan.Subtract(TimeSpan.FromSeconds(1)); + StateHasChanged(); + } - if (IsPause) - { - ResetEvent.WaitOne(); - AlertTime = DateTime.Now.Add(CurrentTimespan).ToString("HH:mm:ss"); + if (IsPause) + { + ResetEvent.WaitOne(); + AlertTime = DateTime.Now.Add(CurrentTimespan).ToString("HH:mm:ss"); - // 重建 CancelToken - CancelTokenSource.Dispose(); - CancelTokenSource = new CancellationTokenSource(); - } + // 重建 CancelToken + CancelTokenSource.Dispose(); + CancelTokenSource = new CancellationTokenSource(); } + } - if (CurrentTimespan == TimeSpan.Zero) + if (CurrentTimespan == TimeSpan.Zero) + { + await Task.Delay(500, CancelTokenSource.Token); + if (!CancelTokenSource.IsCancellationRequested) { - await Task.Delay(500, CancelTokenSource.Token); - if (!CancelTokenSource.IsCancellationRequested) + Value = TimeSpan.Zero; + Vibrate = IsVibrate; + StateHasChanged(); + if (OnTimeout != null) { - Value = TimeSpan.Zero; - await InvokeAsync(async () => - { - Vibrate = IsVibrate; - StateHasChanged(); - if (OnTimeout != null) - { - await OnTimeout(); - } - }); + await OnTimeout(); } } - }); - return Task.CompletedTask; + } } private void OnClickPause() From f952ccb67113da2c215af23a64cb08036c784b3c Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 26 Apr 2025 11:36:47 +0800 Subject: [PATCH 2/2] chore: bump version 9.5.11-beta06 Co-Authored-By: SameulTian <48208085+samueltian666@users.noreply.github.com> --- src/BootstrapBlazor/BootstrapBlazor.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 076d95a7ca0..4440e6200a1 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.5.11-beta05 + 9.5.11-beta06