From f8b64ef908d8b82bb71ba753b69a30ea658f9054 Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Thu, 19 Mar 2026 05:34:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E5=90=8E=E4=BF=9D=E7=95=99=E4=B8=8A=E6=AC=A1=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaWpfGui/Main/AsstProxy.cs | 2 -- src/MaaWpfGui/ViewModels/TaskItemViewModel.cs | 7 ++++++- src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs | 9 +++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index 49c3ad41bb..03806c61e4 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -1042,7 +1042,6 @@ public class AsstProxy foreach (var i in Instances.TaskQueueViewModel.TaskItemViewModels) { i.TaskId = 0; - i.Status = (int)TaskStatus.Idle; } _tasksStatus.Clear(); break; @@ -1192,7 +1191,6 @@ public class AsstProxy foreach (var i in Instances.TaskQueueViewModel.TaskItemViewModels) { i.TaskId = 0; - i.Status = (int)TaskStatus.Idle; } _tasksStatus.Clear(); diff --git a/src/MaaWpfGui/ViewModels/TaskItemViewModel.cs b/src/MaaWpfGui/ViewModels/TaskItemViewModel.cs index c02a86a4a2..099ee9a31e 100644 --- a/src/MaaWpfGui/ViewModels/TaskItemViewModel.cs +++ b/src/MaaWpfGui/ViewModels/TaskItemViewModel.cs @@ -42,8 +42,13 @@ public class TaskItemViewModel : PropertyChangedBase { get => _isEnable; set { - SetAndNotify(ref _isEnable, value); + if (!SetAndNotify(ref _isEnable, value)) + { + return; + } + ConfigFactory.CurrentConfig.TaskQueue[Index].IsEnable = value; + Status = 0; } } diff --git a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs index 2f55e113f9..4e52353f7b 100644 --- a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs @@ -1684,6 +1684,7 @@ public class TaskQueueViewModel : Screen } MainTasksCompletedCount = 0; + ResetTaskItemStatuses(); // 所有提前 return 都要放在 _runningState.SetIdle(false) 之前,否则会导致无法再次点击开始 _runningState.SetIdle(false); @@ -1809,6 +1810,14 @@ public class TaskQueueViewModel : Screen } } + private void ResetTaskItemStatuses() + { + foreach (var item in TaskItemViewModels) + { + item.Status = (int)Main.TaskStatus.Idle; + } + } + public void ManualStop() { if (Stopping || _runningState.GetIdle())