Skip to content

Commit d32a66e

Browse files
committed
Fixed an issue that could cause double-queuing in the Watcher on startup.
1 parent 3d1d9dc commit d32a66e

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

VidCoderFileWatcher/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
try
1313
{
1414
var service = new WatcherService(logger);
15-
await service.RefreshFromWatchedFoldersAsync().ConfigureAwait(false);
1615
service.RestoreFoundFiles();
16+
await service.RefreshFromWatchedFoldersAsync().ConfigureAwait(false);
1717
CancellationTokenSource tokenSource = new();
1818

1919
bool firstLineWritten = false;

VidCoderFileWatcher/Services/WatcherService.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,18 @@ public void MarkFound(WatchedFolder watchedFolder, IList<string> files)
175175

176176
private void StartMonitoringFoundFiles(WatchedFolder watchedFolder, IList<string> files)
177177
{
178-
var batch = new WatchedFileBatch(watchedFolder, files);
179-
foreach (string file in files)
178+
var pendingFiles = new HashSet<string>(
179+
this.pendingStability.SelectMany(b => b.Files),
180+
StringComparer.OrdinalIgnoreCase);
181+
182+
var filesToMonitor = files.Where(file => !pendingFiles.Contains(file)).ToList();
183+
if (filesToMonitor.Count == 0)
184+
{
185+
return;
186+
}
187+
188+
var batch = new WatchedFileBatch(watchedFolder, filesToMonitor);
189+
foreach (string file in filesToMonitor)
180190
{
181191
try
182192
{

0 commit comments

Comments
 (0)