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_) {