Skip to content

Commit eadd595

Browse files
feat(Timer): remove Task.Run support wpf (#5896)
* refactor: 重构代码移除 Task.Run 代码 * chore: bump version 9.5.11-beta06 Co-Authored-By: SameulTian <[email protected]> --------- Co-authored-by: SameulTian <[email protected]>
1 parent 075a1c3 commit eadd595

File tree

1 file changed

+35
-41
lines changed

1 file changed

+35
-41
lines changed

src/BootstrapBlazor/Components/Timer/Timer.razor.cs

Lines changed: 35 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -168,68 +168,62 @@ private async Task Timeout()
168168
}
169169
}
170170

171-
private Task OnStart(TimeSpan val)
171+
private async Task OnStart(TimeSpan val)
172172
{
173173
Value = val;
174174
IsPause = false;
175175
CurrentTimespan = Value;
176176
AlertTime = DateTime.Now.Add(CurrentTimespan).ToString("HH:mm:ss");
177177

178178
StateHasChanged();
179+
await Task.Yield();
179180

180-
_ = Task.Run(async () =>
181+
// 点击 Cancel 后重新设置再点击 Star
182+
if (CancelTokenSource.IsCancellationRequested)
181183
{
182-
// 点击 Cancel 后重新设置再点击 Star
183-
if (CancelTokenSource.IsCancellationRequested)
184+
CancelTokenSource.Dispose();
185+
CancelTokenSource = new CancellationTokenSource();
186+
}
187+
188+
while (!CancelTokenSource.IsCancellationRequested && CurrentTimespan > TimeSpan.Zero)
189+
{
190+
try
184191
{
185-
CancelTokenSource.Dispose();
186-
CancelTokenSource = new CancellationTokenSource();
192+
await Task.Delay(1000, CancelTokenSource.Token);
187193
}
194+
catch (TaskCanceledException) { }
188195

189-
while (!CancelTokenSource.IsCancellationRequested && CurrentTimespan > TimeSpan.Zero)
196+
if (!CancelTokenSource.IsCancellationRequested)
190197
{
191-
try
192-
{
193-
await Task.Delay(1000, CancelTokenSource.Token);
194-
}
195-
catch (TaskCanceledException) { }
196-
197-
if (!CancelTokenSource.IsCancellationRequested)
198-
{
199-
CurrentTimespan = CurrentTimespan.Subtract(TimeSpan.FromSeconds(1));
200-
await InvokeAsync(StateHasChanged);
201-
}
198+
CurrentTimespan = CurrentTimespan.Subtract(TimeSpan.FromSeconds(1));
199+
StateHasChanged();
200+
}
202201

203-
if (IsPause)
204-
{
205-
ResetEvent.WaitOne();
206-
AlertTime = DateTime.Now.Add(CurrentTimespan).ToString("HH:mm:ss");
202+
if (IsPause)
203+
{
204+
ResetEvent.WaitOne();
205+
AlertTime = DateTime.Now.Add(CurrentTimespan).ToString("HH:mm:ss");
207206

208-
// 重建 CancelToken
209-
CancelTokenSource.Dispose();
210-
CancelTokenSource = new CancellationTokenSource();
211-
}
207+
// 重建 CancelToken
208+
CancelTokenSource.Dispose();
209+
CancelTokenSource = new CancellationTokenSource();
212210
}
211+
}
213212

214-
if (CurrentTimespan == TimeSpan.Zero)
213+
if (CurrentTimespan == TimeSpan.Zero)
214+
{
215+
await Task.Delay(500, CancelTokenSource.Token);
216+
if (!CancelTokenSource.IsCancellationRequested)
215217
{
216-
await Task.Delay(500, CancelTokenSource.Token);
217-
if (!CancelTokenSource.IsCancellationRequested)
218+
Value = TimeSpan.Zero;
219+
Vibrate = IsVibrate;
220+
StateHasChanged();
221+
if (OnTimeout != null)
218222
{
219-
Value = TimeSpan.Zero;
220-
await InvokeAsync(async () =>
221-
{
222-
Vibrate = IsVibrate;
223-
StateHasChanged();
224-
if (OnTimeout != null)
225-
{
226-
await OnTimeout();
227-
}
228-
});
223+
await OnTimeout();
229224
}
230225
}
231-
});
232-
return Task.CompletedTask;
226+
}
233227
}
234228

235229
private void OnClickPause()

0 commit comments

Comments
 (0)