Al iniciar el programa, use Directory.GetFiles (ruta) para obtener la lista de archivos.
A continuación, crear un contador de tiempo, y en sus llamadas hasNewFiles evento transcurrido:
static List<string> hasNewFiles(string path, List<string> lastKnownFiles)
{
List<string> files = Directory.GetFiles(path).ToList();
List<string> newFiles = new List<string>();
foreach (string s in files)
{
if (!lastKnownFiles.Contains(s))
newFiles.Add(s);
}
return new List<string>();
}
En el código de llamada, tendrá nuevos archivos si:
List<string> newFiles = hasNewFiles(path, lastKnownFiles);
if (newFiles.Count > 0)
{
processFiles(newFiles);
lastKnownFiles = newFiles;
}
edición: si quieres una más solución linqy:
static IEnumerable<string> hasNewFiles(string path, List<string> lastKnownFiles)
{
return from f in Directory.GetFiles(path)
where !lastKnownFiles.Contains(f)
select f;
}
List<string> newFiles = hasNewFiles(path, lastKnownFiles);
if (newFiles.Count() > 0)
{
processFiles(newFiles);
lastKnownFiles = newFiles;
}
Tal vez esto una prueba de cuándo debe luchar contra su jefe opinión ... Sustitución con un mecanismo de sondeo suena como una locura hablar – fletcher
Por qué no funciona ¿Tu jefe quiere que uses FileSystem Watcher? La razón podría apuntar hacia la mejor solución. Si no hay una razón, @Giorgi probablemente tenga la respuesta correcta. – Kendrick
Supuestamente, FileSystemWatcher no funciona en unidades de red, y yo personalmente experimento casos en los que no se desencadena. –