From 83e7ad936061d5d49636f6abc925cafc9577fbfc Mon Sep 17 00:00:00 2001 From: CGQAQ Date: Mon, 26 Aug 2019 09:32:45 +0800 Subject: [PATCH] fix infinite loop thread hang there causes v2rayN hang in the background MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复死循环线程导致v2rayN在用户点击退出仍挂在后台 --- v2rayN/v2rayN/Forms/MainForm.cs | 3 +++ v2rayN/v2rayN/Handler/StatisticsHandler.cs | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 6d3b3cbe..2a7975e1 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1020,6 +1020,9 @@ namespace v2rayN.Forms this.Visible = false; this.Close(); + + statistics.Close(); + //this.Dispose(); //System.Environment.Exit(System.Environment.ExitCode); Application.Exit(); diff --git a/v2rayN/v2rayN/Handler/StatisticsHandler.cs b/v2rayN/v2rayN/Handler/StatisticsHandler.cs index 9813c8ef..242b045e 100644 --- a/v2rayN/v2rayN/Handler/StatisticsHandler.cs +++ b/v2rayN/v2rayN/Handler/StatisticsHandler.cs @@ -47,6 +47,8 @@ namespace v2rayN.Handler private string logPath_; + private bool exitFlag_; // true to close workThread_ + public StatisticsHandler(Config config, Action> update) { config_ = config; @@ -55,6 +57,7 @@ namespace v2rayN.Handler updateFunc_ = update; logPath_ = Utils.GetPath($"{Global.StatisticLogDirectory}\\"); Statistic = new List(); + exitFlag_ = false; DeleteExpiredLog(); foreach (var server in config.vmess) @@ -90,11 +93,17 @@ namespace v2rayN.Handler workThread_.Start(); } + public void Close() + { + exitFlag_ = true; + connector_.Kill(); + } + public void run() { try { - while (true) + while (!exitFlag_) { if (enabled_) {