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);
}
}