mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-25 10:05:49 +08:00
fix: 移除冗余的取消令牌传递并集中管理取消令牌
在任务执行时,不再从调用方传递 CancellationContext 的令牌,而是在 GearTaskExecutor 内部统一创建和管理链接的取消令牌。这简化了调用方的代码,并确保了取消令牌的正确生命周期管理。
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using BetterGenshinImpact.Core.Script;
|
||||
using BetterGenshinImpact.GameTask;
|
||||
using BetterGenshinImpact.Service;
|
||||
using BetterGenshinImpact.Service.GearTask;
|
||||
@@ -55,8 +53,7 @@ public class QuartzGearTaskJob : IJob
|
||||
}
|
||||
|
||||
var executor = App.GetRequiredService<GearTaskExecutor>();
|
||||
using var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(context.CancellationToken, CancellationContext.Instance.GetActiveToken());
|
||||
await executor.ExecuteTaskDefinitionAsync(taskDefinitionName, linkedCts.Token);
|
||||
await executor.ExecuteTaskDefinitionAsync(taskDefinitionName, context.CancellationToken);
|
||||
|
||||
_logger.LogInformation("触发器 {TriggerName} 的任务定义执行完成", triggerName);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using BetterGenshinImpact.Core.Script;
|
||||
using BetterGenshinImpact.GameTask;
|
||||
using BetterGenshinImpact.Model.Gear;
|
||||
using BetterGenshinImpact.Model.Gear.Tasks;
|
||||
using BetterGenshinImpact.Service.GearTask;
|
||||
@@ -92,7 +94,9 @@ public partial class GearTaskExecutor : ObservableObject
|
||||
var rootTask = await _taskConverter.ConvertTaskDataAsync(rootTaskData);
|
||||
|
||||
// 使用执行管理器执行任务
|
||||
await _executionManager.ExecuteWithTrackingAsync(rootTask, ct);
|
||||
CancellationContext.Instance.Set();
|
||||
using var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(ct, CancellationContext.Instance.GetActiveToken());
|
||||
await _executionManager.ExecuteWithTrackingAsync(rootTask, linkedCts.Token);
|
||||
|
||||
StatusMessage = "任务执行完成";
|
||||
Progress = 100;
|
||||
@@ -112,6 +116,8 @@ public partial class GearTaskExecutor : ObservableObject
|
||||
}
|
||||
finally
|
||||
{
|
||||
CancellationContext.Instance.Clear();
|
||||
RunnerContext.Instance.Clear();
|
||||
IsExecuting = false;
|
||||
}
|
||||
}
|
||||
@@ -233,4 +239,4 @@ internal class EmptyGearTask : BaseGearTask
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,7 +350,7 @@ public partial class GearTaskListPageViewModel : ViewModel
|
||||
return;
|
||||
}
|
||||
|
||||
await executor.ExecuteTaskDefinitionAsync(taskDefinition.Name, CancellationContext.Instance.GetActiveToken());
|
||||
await executor.ExecuteTaskDefinitionAsync(taskDefinition.Name);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user