OSDN Git Service

ほかのPCでstatus.xmlが更新されたときに読み込む
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 23 Feb 2018 13:31:38 +0000 (22:31 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 25 Feb 2018 05:53:55 +0000 (14:53 +0900)
KancolleSniffer/MainForm.cs

index 168f30e..2d2dcdc 100644 (file)
@@ -90,7 +90,7 @@ namespace KancolleSniffer
             _proxyManager.UpdatePacFile();\r
             PerformZoom();\r
             _shipLabels.AdjustAkashiTimers();\r
-            _sniffer.LoadState();\r
+            LoadState();\r
             _sniffer.RepeatingTimerController = new RepeatingTimerController(_notificationManager, _config);\r
         }\r
 \r
@@ -107,6 +107,32 @@ namespace KancolleSniffer
                 handle = panel.Handle;\r
         }\r
 \r
+        private readonly FileSystemWatcher _watcher = new FileSystemWatcher\r
+        {\r
+            Path = AppDomain.CurrentDomain.BaseDirectory,\r
+            Filter = "status.xml",\r
+            NotifyFilter = NotifyFilters.LastWrite\r
+        };\r
+\r
+        private readonly Timer _watcherTimer = new Timer {Interval = 1000};\r
+\r
+        private void LoadState()\r
+        {\r
+            _sniffer.LoadState();\r
+            _watcher.SynchronizingObject = this;\r
+            _watcherTimer.Tick += (sender, ev) =>\r
+            {\r
+                _watcherTimer.Stop();\r
+                _sniffer.LoadState();\r
+            };\r
+            _watcher.Changed += (sender, ev) =>\r
+            {\r
+                _watcherTimer.Stop();\r
+                _watcherTimer.Start();\r
+            };\r
+            _watcher.EnableRaisingEvents = true;\r
+        }\r
+\r
         private class RepeatingTimerController : Sniffer.IRepeatingTimerController\r
         {\r
             private readonly NotificationManager _manager;\r