From dd4368faf95d4d20d0070976056be5b86b1ddb7e Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 18 Jun 2021 13:03:03 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91=E8=A7=A3?= =?UTF-8?q?=E5=86=B3Luban.Client=E5=9C=A8watch=E6=A8=A1=E5=BC=8F=E4=B8=8B?= =?UTF-8?q?=EF=BC=8C=E6=95=B0=E6=8D=AE=E7=9B=AE=E5=BD=95=E5=8F=98=E5=8C=96?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E8=A7=A6=E5=8F=91=E4=B8=A4=E6=AC=A1=E7=94=9F?= =?UTF-8?q?=E6=88=90=EF=BC=88=E7=AC=AC=E4=BA=8C=E6=AC=A1=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=EF=BC=89=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/Utils/MultiFileWatcher.cs | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/Luban.Client/Source/Utils/MultiFileWatcher.cs b/src/Luban.Client/Source/Utils/MultiFileWatcher.cs index 8b427dc..9641a34 100644 --- a/src/Luban.Client/Source/Utils/MultiFileWatcher.cs +++ b/src/Luban.Client/Source/Utils/MultiFileWatcher.cs @@ -26,13 +26,13 @@ namespace Luban.Client.Utils { var watcher = new FileSystemWatcher(file); - watcher.NotifyFilter = NotifyFilters.Attributes - | NotifyFilters.CreationTime - | NotifyFilters.DirectoryName + watcher.NotifyFilter = // NotifyFilters.Attributes + //| NotifyFilters.CreationTime + NotifyFilters.DirectoryName | NotifyFilters.FileName - | NotifyFilters.LastAccess + //| NotifyFilters.LastAccess | NotifyFilters.LastWrite - | NotifyFilters.Security + //| NotifyFilters.Security | NotifyFilters.Size; watcher.Changed += this.OnChange; @@ -50,19 +50,37 @@ namespace Luban.Client.Utils } } + private readonly static List _filterSuffixs = new List + { + ".xlsx", + ".csv", + ".xls", + ".json", + ".lua", + ".xml", + }; + private void OnChange(object sender, FileSystemEventArgs e) { + var dirtyName = e.Name; + if (string.IsNullOrWhiteSpace(dirtyName) || !_filterSuffixs.Any(s => dirtyName.EndsWith(s))) + { + return; + } + lock (_watchLocker) { if (_watchDirChange) { + s_logger.Trace("== has mark dirty:{}. ignore", e.FullPath); return; } _watchDirChange = true; + s_logger.Trace("== mark dirty:{}", e.FullPath); Task.Run(async () => { - await Task.Delay(400); + await Task.Delay(100); lock (_watchLocker) {