diff --git a/v2rayN/ServiceLib/ServiceLib.csproj b/v2rayN/ServiceLib/ServiceLib.csproj
index 0fcf27eb..d2cd37ef 100644
--- a/v2rayN/ServiceLib/ServiceLib.csproj
+++ b/v2rayN/ServiceLib/ServiceLib.csproj
@@ -4,7 +4,7 @@
net8.0
enable
enable
- 7.0.7
+ 7.0.8
diff --git a/v2rayN/v2rayN.Desktop/App.axaml.cs b/v2rayN/v2rayN.Desktop/App.axaml.cs
index ce405661..898de4e8 100644
--- a/v2rayN/v2rayN.Desktop/App.axaml.cs
+++ b/v2rayN/v2rayN.Desktop/App.axaml.cs
@@ -69,11 +69,12 @@ public partial class App : Application
}
}
- private void MenuExit_Click(object? sender, EventArgs e)
+ private async void MenuExit_Click(object? sender, EventArgs e)
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
- Locator.Current.GetService()?.MyAppExitAsync(false);
+ var service = Locator.Current.GetService();
+ if (service != null) await service.MyAppExitAsync(false);
desktop.Shutdown();
}
diff --git a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs
index 0825faff..4d4e67f7 100644
--- a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs
+++ b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs
@@ -10,7 +10,6 @@ using DialogHostAvalonia;
using MsBox.Avalonia.Enums;
using ReactiveUI;
using Splat;
-using System.ComponentModel;
using System.Reactive.Disposables;
using v2rayN.Desktop.Common;
@@ -30,7 +29,6 @@ namespace v2rayN.Desktop.Views
_config = AppHandler.Instance.Config;
_manager = new WindowNotificationManager(TopLevel.GetTopLevel(this)) { MaxItems = 3, Position = NotificationPosition.BottomRight };
- this.Closing += MainWindow_Closing;
this.KeyDown += MainWindow_KeyDown;
menuSettingsSetUWP.Click += menuSettingsSetUWP_Click;
menuPromotion.Click += menuPromotion_Click;
@@ -274,10 +272,22 @@ namespace v2rayN.Desktop.Views
}
}
- private void MainWindow_Closing(object? sender, CancelEventArgs e)
+ protected override async void OnClosing(WindowClosingEventArgs e)
{
- e.Cancel = true;
- ShowHideWindow(false);
+ Logging.SaveLog("OnClosing -> " + e.CloseReason.ToString());
+
+ switch (e.CloseReason)
+ {
+ case WindowCloseReason.OwnerWindowClosing or WindowCloseReason.WindowClosing:
+ e.Cancel = true;
+ ShowHideWindow(false);
+ break;
+ case WindowCloseReason.ApplicationShutdown or WindowCloseReason.OSShutdown:
+ await ViewModel?.MyAppExitAsync(true);
+ break;
+ }
+
+ base.OnClosing(e);
}
private async void MainWindow_KeyDown(object? sender, KeyEventArgs e)
diff --git a/v2rayN/v2rayN/Views/MainWindow.xaml.cs b/v2rayN/v2rayN/Views/MainWindow.xaml.cs
index e9a18a73..0243fcff 100644
--- a/v2rayN/v2rayN/Views/MainWindow.xaml.cs
+++ b/v2rayN/v2rayN/Views/MainWindow.xaml.cs
@@ -270,11 +270,11 @@ namespace v2rayN.Views
StorageUI();
}
- private void Current_SessionEnding(object sender, SessionEndingCancelEventArgs e)
+ private async void Current_SessionEnding(object sender, SessionEndingCancelEventArgs e)
{
Logging.SaveLog("Current_SessionEnding");
StorageUI();
- ViewModel?.MyAppExitAsync(true);
+ await ViewModel?.MyAppExitAsync(true);
}
private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
diff --git a/v2rayN/v2rayN/Views/StatusBarView.xaml.cs b/v2rayN/v2rayN/Views/StatusBarView.xaml.cs
index d1234ff7..96b2ce58 100644
--- a/v2rayN/v2rayN/Views/StatusBarView.xaml.cs
+++ b/v2rayN/v2rayN/Views/StatusBarView.xaml.cs
@@ -100,11 +100,11 @@ namespace v2rayN.Views
return await Task.FromResult(true);
}
- private void menuExit_Click(object sender, RoutedEventArgs e)
+ private async void menuExit_Click(object sender, RoutedEventArgs e)
{
tbNotify.Dispose();
var service = Locator.Current.GetService();
- if (service != null) service.MyAppExitAsync(false);
+ if (service != null) await service.MyAppExitAsync(false);
}
private void txtRunningInfoDisplay_MouseDoubleClick(object sender, MouseButtonEventArgs e)