From 32583ea8b377677b4da30781adb7b703a5f45dce Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Fri, 7 Nov 2025 21:06:43 +0800 Subject: [PATCH] Bug fix Replaced direct assignments to BlReloadEnabled with a new SetReloadEnabled method that schedules updates on the main thread. --- .../ViewModels/MainWindowViewModel.cs | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs b/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs index 525916c8..ad91fa02 100644 --- a/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs @@ -268,7 +268,7 @@ public class MainWindowViewModel : MyReactiveObject } await RefreshServers(); - BlReloadEnabled = true; + SetReloadEnabled(true); await Reload(); } @@ -534,7 +534,7 @@ public class MainWindowViewModel : MyReactiveObject return; } - BlReloadEnabled = false; + SetReloadEnabled(false); var msgs = await ActionPrecheckManager.Instance.Check(_config.IndexId); if (msgs.Count > 0) @@ -544,7 +544,7 @@ public class MainWindowViewModel : MyReactiveObject NoticeManager.Instance.SendMessage(msg); } NoticeManager.Instance.Enqueue(Utils.List2String(msgs.Take(10).ToList(), true)); - BlReloadEnabled = true; + SetReloadEnabled(true); return; } @@ -562,9 +562,8 @@ public class MainWindowViewModel : MyReactiveObject AppEvents.ProxiesReloadRequested.Publish(); } - RxApp.MainThreadScheduler.Schedule(() => ReloadResult(showClashUI)); - - BlReloadEnabled = true; + ReloadResult(showClashUI); + SetReloadEnabled(true); if (_hasNextReloadJob) { _hasNextReloadJob = false; @@ -574,9 +573,16 @@ public class MainWindowViewModel : MyReactiveObject private void ReloadResult(bool showClashUI) { - // BlReloadEnabled = true; - ShowClashUI = showClashUI; - TabMainSelectedIndex = showClashUI ? TabMainSelectedIndex : 0; + RxApp.MainThreadScheduler.Schedule(() => + { + ShowClashUI = showClashUI; + TabMainSelectedIndex = showClashUI ? TabMainSelectedIndex : 0; + }); + } + + private void SetReloadEnabled(bool enabled) + { + RxApp.MainThreadScheduler.Schedule(() => BlReloadEnabled = enabled); } private async Task LoadCore()