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

@ -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
}
}