Fixed race condition.

This commit is contained in:
Michael Bucari-Tovo 2021-07-28 12:25:05 -06:00
parent 3c1db55a95
commit 9de85b649b
3 changed files with 33 additions and 3 deletions

View File

@ -170,6 +170,8 @@ namespace FileLiberator
File.Move(f.FullName, dest);
}
AudibleFileStorage.Audio.Refresh();
return destinationDir;
}

View File

@ -57,6 +57,11 @@ namespace FileManager
extAggr = extensions_noDots.Aggregate((a, b) => $"{a}|{b}");
}
public void Refresh()
{
BookDirectoryFiles.RefreshFiles();
}
/// <summary>
/// Example for full books:
/// Search recursively in _books directory. Full book exists if either are true

View File

@ -28,6 +28,17 @@ namespace FileManager
}
}
public void RefreshFiles()
{
if (fsCache is null) return;
lock (fsCache)
{
fsCache.Clear();
fsCache.AddRange(Directory.EnumerateFiles(RootDirectory, SearchPattern, SearchOption));
}
}
public void Init(string rootDirectory, string searchPattern, SearchOption searchOptions)
{
RootDirectory = rootDirectory;
@ -57,6 +68,19 @@ namespace FileManager
backgroundScanner.Start();
}
private void AddUniqueFiles(IEnumerable<string> newFiles)
{
foreach (var file in newFiles)
{
AddUniqueFile(file);
}
}
private void AddUniqueFile(string newFile)
{
if (!fsCache.Contains(newFile))
fsCache.Add(newFile);
}
private void FileSystemWatcher_Error(object sender, ErrorEventArgs e)
{
Init(RootDirectory, SearchPattern, SearchOption);
@ -107,11 +131,10 @@ namespace FileManager
private void AddPath(string path)
{
if (File.GetAttributes(path).HasFlag(FileAttributes.Directory))
fsCache.AddRange(Directory.EnumerateFiles(path, SearchPattern, SearchOption));
AddUniqueFiles(Directory.EnumerateFiles(path, SearchPattern, SearchOption));
else
fsCache.Add(path);
AddUniqueFile(path);
}
#endregion
}
}