diff --git a/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs b/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs index 8f0a806..05607e9 100644 --- a/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs +++ b/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs @@ -17,7 +17,7 @@ namespace ZeroLevel.Services.FileSystem private readonly HashSet _extensions; public event Action OnStartMovingFilesToTemporary = delegate { }; - public event Action OnMovingFileToTemporary = delegate { }; + public event Action OnMovingFileToTemporary = delegate { }; public event Action OnCompleteMovingFilesToTemporary = delegate { }; private readonly bool _autoRemoveTempFileAfterCallback = false; @@ -81,41 +81,43 @@ namespace ZeroLevel.Services.FileSystem OnStartMovingFilesToTemporary?.Invoke(files.Length); foreach (var file in files) { + if (!File.Exists(file)) + { + Log.Warning($"[PeriodicFileSystemWatcher.CheckSourceFolder] Find '{file}' does not exists"); + continue; + } + Log.Debug($"[PeriodicFileSystemWatcher.CheckSourceFolder] Find new file {file}"); + if (FSUtils.IsFileLocked(new FileInfo(file))) + { + continue; + } + string tempFile; try { - Log.Debug($"[PeriodicFileSystemWatcher.CheckSourceFolder] Find new file {file}"); - if (FSUtils.IsFileLocked(new FileInfo(file))) - { - continue; - } - string tempFile; - try + tempFile = MoveToTemporary(file); + if (string.IsNullOrWhiteSpace(tempFile)) { - tempFile = MoveToTemporary(file); - if (string.IsNullOrWhiteSpace(tempFile)) - { - Log.SystemWarning($"[PeriodicFileSystemWatcher.CheckSourceFolder] Failed to move file '{file}' to temporary directory '{_temporaryFolder}'. Without system error!"); - continue; - } - } - catch (Exception ex) - { - Log.SystemError(ex, $"[PeriodicFileSystemWatcher.CheckSourceFolder] Failed to attempt to move file '{file}' to temporary directory '{_temporaryFolder}'"); + Log.SystemWarning($"[PeriodicFileSystemWatcher.CheckSourceFolder] Failed to move file '{file}' to temporary directory '{_temporaryFolder}'. Without system error!"); continue; } - finally - { - OnMovingFileToTemporary?.Invoke(); - } - Log.Debug($"[PeriodicFileSystemWatcher.CheckSourceFolder] Handle file {file}"); - try - { - _callback(new FileMeta(Path.GetFileName(file), tempFile)); - } - catch (Exception ex) - { - Log.SystemError(ex, $"[PeriodicFileSystemWatcher.CheckSourceFolder] Fault callback for file '{tempFile}'"); - } + OnMovingFileToTemporary?.Invoke(file, tempFile); + } + catch (Exception ex) + { + Log.SystemError(ex, $"[PeriodicFileSystemWatcher.CheckSourceFolder] Failed to attempt to move file '{file}' to temporary directory '{_temporaryFolder}'"); + continue; + } + Log.Debug($"[PeriodicFileSystemWatcher.CheckSourceFolder] Handle file {file}"); + try + { + _callback(new FileMeta(Path.GetFileName(file), tempFile)); + } + catch (Exception ex) + { + Log.SystemError(ex, $"[PeriodicFileSystemWatcher.CheckSourceFolder] Fault callback for file '{tempFile}'"); + } + try + { if (_autoRemoveTempFileAfterCallback) { File.Delete(tempFile); @@ -123,7 +125,7 @@ namespace ZeroLevel.Services.FileSystem } catch (Exception ex) { - Log.SystemError(ex, $"[PeriodicFileSystemWatcher.CheckSourceFolder] Fault proceed file {file}"); + Log.SystemError(ex, $"[PeriodicFileSystemWatcher.CheckSourceFolder] Fault delete file {tempFile}"); } } OnCompleteMovingFilesToTemporary?.Invoke(); diff --git a/ZeroLevel/ZeroLevel.csproj b/ZeroLevel/ZeroLevel.csproj index c5212cd..68acd05 100644 --- a/ZeroLevel/ZeroLevel.csproj +++ b/ZeroLevel/ZeroLevel.csproj @@ -6,16 +6,16 @@ ogoun ogoun - 3.3.4.6 - Extended the MemoryStreamReader. + 3.3.4.7 + Fix PeriodicFileSystemWatcher https://github.com/ogoun/Zero/wiki Copyright Ogoun 2020 https://github.com/ogoun/Zero GitHub - 3.3.4.6 - 3.3.4.6 + 3.3.4.7 + 3.3.4.7 AnyCPU;x64 zero.png