This is another implementation of FileSystemWatcher as FileSystemWatcher doesn’t work in all cases. public class LoopFileSystemWatcher { public delegate void LoopFileSystemEventHandler( object source, LoopFileSystemEvent e); public event LoopFileSystemEventHandler created; readonly List<string> fileCache = new List<string>(); private readonly string folderPath; private readonly string fileFilter; private readonly int checkFrequency; private bool cancelled = false ; public LoopFileSystemWatcher(string folderPath, string fileFilter, int checkFrequency) { this.folderPath = folderPath; this.fileFilter = fileFilter; this.checkFrequency = checkFrequency; DirectoryInfo dir = new DirectoryInfo(folderPath); foreach (FileInfo file in dir.GetFiles(fileFilter)) { fileCache. Add ( file .Name); } } public void Wait( int waitSeconds) { Thread t = n