diff --git a/Source/GrasscutterTools/Forms/FormMain.cs b/Source/GrasscutterTools/Forms/FormMain.cs index fe0458a..ffbf2f9 100644 --- a/Source/GrasscutterTools/Forms/FormMain.cs +++ b/Source/GrasscutterTools/Forms/FormMain.cs @@ -164,7 +164,9 @@ namespace GrasscutterTools.Forms // 遍历每一个页面,通知关闭 foreach (var page in Pages.Values) { + Logger.I(TAG, $"{page.Name} OnClosed enter"); page.OnClosed(); + Logger.I(TAG, $"{page.Name} OnClosed completed"); } // 保存当前设置 diff --git a/Source/GrasscutterTools/Pages/PageProxy.cs b/Source/GrasscutterTools/Pages/PageProxy.cs index 10131c9..41f6115 100644 --- a/Source/GrasscutterTools/Pages/PageProxy.cs +++ b/Source/GrasscutterTools/Pages/PageProxy.cs @@ -40,6 +40,8 @@ namespace GrasscutterTools.Pages TxtHost.Text = Settings.Default.Host; ChkAutoStart.Checked = Settings.Default.AutoStartProxy; + Application.ApplicationExit += OnApplicationExit; + if (Settings.Default.AutoStartProxy && !ProxyHelper.IsRunning) { Logger.I(Name, "Auto start proxy!"); @@ -47,11 +49,36 @@ namespace GrasscutterTools.Pages } } + /// + /// 当应用程序退出时触发 + /// + private void OnApplicationExit(object sender, EventArgs e) + { + if (!ProxyHelper.IsRunning) return; + Logger.I(Name, "OnApplicationExit: StopProxy..."); + // 停止代理 + StopProxy(); + } + + /// + /// 当页面被关闭时触发 + /// public override void OnClosed() + { + if (!ProxyHelper.IsRunning) return; + Logger.I(Name, "OnPageClosed: StopProxy..."); + // 停止代理 + StopProxy(); + } + + /// + /// 停止代理 + /// + private static void StopProxy() { try { - Logger.I(Name, "Stop Proxy"); + Logger.I("PageProxy", "Stop Proxy"); ProxyHelper.StopProxy(); } catch (Exception ex) @@ -59,7 +86,7 @@ namespace GrasscutterTools.Pages #if DEBUG MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); #endif - Logger.E(Name, "Stop Proxy Failed.", ex); + Logger.E("PageProxy", "Stop Proxy Failed.", ex); } }