+\r
+ private readonly AutoResetEvent _stopEvent = new AutoResetEvent(false);\r
+ private Task _checkerTask;\r
+\r
+ private void SetAutoProxyUrl()\r
+ {\r
+ var url = $"http://localhost:{_config.Proxy.Listen}/proxy.pac";\r
+ _systemProxy.SetAutoProxyUrl(url);\r
+ if (_checkerTask != null && !_checkerTask.IsCompleted)\r
+ return;\r
+ _checkerTask = Task.Run(() =>\r
+ {\r
+ // Windows 10でプロキシ設定がいつの間にか消えるのに対応するために、\r
+ // 設定が消えていないか毎秒確認して、消えていたら再設定する。\r
+ do\r
+ {\r
+ var proxy = WebRequest.GetSystemWebProxy().GetProxy(new Uri("http://125.6.184.16/"));\r
+ if (!proxy.IsLoopback)\r
+ {\r
+ File.AppendAllText("proxy.log", $"[{DateTime.Now:g}] proxy setting vanished.\r\n");\r
+ _systemProxy.SetAutoProxyUrl(url);\r
+ }\r
+ } while (!_stopEvent.WaitOne(1000));\r
+ });\r
+ }\r
+\r
+ private void RestoreSystemProxy()\r
+ {\r
+ if (_checkerTask != null && !_checkerTask.IsCompleted)\r
+ {\r
+ _stopEvent.Set();\r
+ _checkerTask.Wait();\r
+ }\r
+ _systemProxy.RestoreSettings();\r
+ }\r