From ed3ee2c392ae71e076df75f614ecb5f869a942b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=89=E9=B8=AD=E8=9B=8B?= Date: Sat, 9 May 2026 03:49:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E7=94=A8=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Model/Gear/Triggers/GearBaseTrigger.cs | 9 ---- .../Service/GearTask/GearTaskExecutor.cs | 54 +------------------ .../GearTask/GearTaskStorageService.cs | 13 +++-- .../Windows/GearTask/AddTriggerDialog.xaml.cs | 1 + .../Pages/GearTaskListPageViewModel.cs | 2 + .../GearTask/AddTriggerDialogViewModel.cs | 1 + 6 files changed, 11 insertions(+), 69 deletions(-) diff --git a/BetterGenshinImpact/Model/Gear/Triggers/GearBaseTrigger.cs b/BetterGenshinImpact/Model/Gear/Triggers/GearBaseTrigger.cs index f055606c..4017d98d 100644 --- a/BetterGenshinImpact/Model/Gear/Triggers/GearBaseTrigger.cs +++ b/BetterGenshinImpact/Model/Gear/Triggers/GearBaseTrigger.cs @@ -24,13 +24,4 @@ public abstract class GearBaseTrigger /// public string TaskDefinitionName { get; set; } = string.Empty; - /// - /// 执行任务 - /// - public async Task Trigger() - { - var gearTaskExecutor = App.GetRequiredService(); - await gearTaskExecutor.ExecuteTaskDefinitionAsync(TaskDefinitionName); - } - } \ No newline at end of file diff --git a/BetterGenshinImpact/Service/GearTask/GearTaskExecutor.cs b/BetterGenshinImpact/Service/GearTask/GearTaskExecutor.cs index 6a05d476..d8df8e16 100644 --- a/BetterGenshinImpact/Service/GearTask/GearTaskExecutor.cs +++ b/BetterGenshinImpact/Service/GearTask/GearTaskExecutor.cs @@ -5,6 +5,7 @@ using System.Threading; using System.Threading.Tasks; using BetterGenshinImpact.Model.Gear; using BetterGenshinImpact.Model.Gear.Tasks; +using BetterGenshinImpact.Service.GearTask; using BetterGenshinImpact.ViewModel.Pages.Component; using Microsoft.Extensions.Logging; using Microsoft.Extensions.DependencyInjection; @@ -115,59 +116,6 @@ public partial class GearTaskExecutor : ObservableObject } } - /// - /// 直接执行 GearTaskData - /// - /// 任务数据 - /// 取消令牌 - /// - public async Task ExecuteTaskDataAsync(GearTaskData taskData, CancellationToken ct = default) - { - if (IsExecuting) - { - throw new InvalidOperationException("任务执行器正在运行中,请等待当前任务完成"); - } - - try - { - IsExecuting = true; - StatusMessage = "正在执行任务..."; - Progress = 0; - - _logger.LogInformation("开始执行任务: {TaskName}", taskData.Name); - - // 转换为可执行的任务 - var executableTask = await _taskConverter.ConvertTaskDataAsync(taskData); - - // 使用执行管理器执行任务 - await _executionManager.ExecuteWithTrackingAsync(executableTask, ct); - - StatusMessage = "任务执行完成"; - Progress = 100; - _logger.LogInformation("任务执行完成: {TaskName}", taskData.Name); - } - catch (OperationCanceledException) - { - StatusMessage = "任务执行已取消"; - _logger.LogInformation("任务执行已取消: {TaskName}", taskData.Name); - throw; - } - catch (Exception ex) - { - StatusMessage = $"任务执行失败: {ex.Message}"; - _logger.LogError(ex, "执行任务时发生错误: {TaskName}", taskData.Name); - throw; - } - finally - { - IsExecuting = false; - } - } - - - - - /// /// 停止当前执行的任务 /// diff --git a/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs b/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs index 6f836cf8..4dc8a6c1 100644 --- a/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs +++ b/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs @@ -1,16 +1,15 @@ -using BetterGenshinImpact.Model.Gear; -using BetterGenshinImpact.ViewModel.Pages.Component; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; -using BetterGenshinImpact.Core.Config; +using BetterGenshinImpact.Model.Gear; using BetterGenshinImpact.Service.GearTask.Model; +using BetterGenshinImpact.ViewModel.Pages.Component; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; -namespace BetterGenshinImpact.Service; +namespace BetterGenshinImpact.Service.GearTask; /// /// 齿轮任务存储服务,负责任务定义的 JSON 持久化 @@ -89,7 +88,7 @@ public class GearTaskStorageService } var viewModel = ConvertToViewModel(data); - _logger.LogInformation("任务定义 '{TaskName}' 已从 {FilePath} 加载", data.Name, filePath); + _logger.LogInformation("任务定义 '{TaskName}' 已加载", data.Name); return viewModel; } diff --git a/BetterGenshinImpact/View/Windows/GearTask/AddTriggerDialog.xaml.cs b/BetterGenshinImpact/View/Windows/GearTask/AddTriggerDialog.xaml.cs index 91c42670..683dfd14 100644 --- a/BetterGenshinImpact/View/Windows/GearTask/AddTriggerDialog.xaml.cs +++ b/BetterGenshinImpact/View/Windows/GearTask/AddTriggerDialog.xaml.cs @@ -5,6 +5,7 @@ using BetterGenshinImpact.ViewModel.Windows.GearTask; using BetterGenshinImpact.ViewModel.Pages.Component; using Microsoft.Extensions.DependencyInjection; using BetterGenshinImpact.Service; +using BetterGenshinImpact.Service.GearTask; using Microsoft.Extensions.Logging; namespace BetterGenshinImpact.View.Windows.GearTask; diff --git a/BetterGenshinImpact/ViewModel/Pages/GearTaskListPageViewModel.cs b/BetterGenshinImpact/ViewModel/Pages/GearTaskListPageViewModel.cs index 357d06d8..c273ba60 100644 --- a/BetterGenshinImpact/ViewModel/Pages/GearTaskListPageViewModel.cs +++ b/BetterGenshinImpact/ViewModel/Pages/GearTaskListPageViewModel.cs @@ -13,6 +13,8 @@ using System.IO; using System.Windows; using System.Windows.Controls; using BetterGenshinImpact.Core.Config; +using BetterGenshinImpact.Core.Script; +using BetterGenshinImpact.Service.GearTask; using BetterGenshinImpact.View.Windows; using BetterGenshinImpact.View.Windows.GearTask; using BetterGenshinImpact.ViewModel.Windows; diff --git a/BetterGenshinImpact/ViewModel/Windows/GearTask/AddTriggerDialogViewModel.cs b/BetterGenshinImpact/ViewModel/Windows/GearTask/AddTriggerDialogViewModel.cs index 6854ce98..906cd7a7 100644 --- a/BetterGenshinImpact/ViewModel/Windows/GearTask/AddTriggerDialogViewModel.cs +++ b/BetterGenshinImpact/ViewModel/Windows/GearTask/AddTriggerDialogViewModel.cs @@ -7,6 +7,7 @@ using BetterGenshinImpact.Helpers.Extensions; using BetterGenshinImpact.Model; using BetterGenshinImpact.Model.Gear.Triggers; using BetterGenshinImpact.Service; +using BetterGenshinImpact.Service.GearTask; using BetterGenshinImpact.View.Windows; using BetterGenshinImpact.ViewModel.Pages.Component; using Microsoft.Extensions.Logging;