Ho un programma eseguito come servizio di Windows; elabora i file in una cartella specifica. Poiché si tratta di un servizio, monitora costantemente una cartella per i nuovi file che sono stati aggiunti. Parte del lavoro del programma consiste nell'eseguire confronti di file nella cartella di destinazione e contrassegnare file non corrispondenti. Quello che mi piacerebbe fare è essere in grado di rilevare se un'operazione di copia è in corso e quando è stata completata, in questo modo un file non viene contrassegnato prematuramente se il file corrispondente non è stato ancora copiato nella cartella di destinazione.C# - In attesa di un'operazione di copia da completare
Quello che stavo pensando di fare era usare FileSystemWatcher per guardare la cartella di destinazione e vedere se si sta verificando un'operazione di copia. Se c'è, metto in pausa il thread principale del mio programma fino al completamento dell'operazione di copia, quindi procedo ad eseguire l'operazione sulla cartella come normale. Volevo solo avere un'idea di questo approccio e vedere se è valido; se qualcun altro ha altri approcci univoci a questo problema, sarebbe molto apprezzato.
UPDATE:
Grazie a tutti per i vostri suggerimenti
UPDATE 2:
Mi scuso per la confusione, quando dico directory di destinazione, voglio dire la cartella di origine che contiene tutti i file che voglio processare. Una parte della funzione del mio programma è copiare la struttura di directory della directory di origine in una directory di destinazione e copiare tutti i file validi nella directory di destinazione, preservando la struttura di directory della directory di origine originale, ovvero un utente può copiare cartelle contenenti file alla directory di origine. Voglio evitare errori assicurando che se un nuovo set di cartelle contenente più sottocartelle e file venga copiato nella directory di origine per l'elaborazione, il mio programma non inizierà a funzionare nella directory di destinazione fino al completamento del processo di copia.
+1. Questa è un'ottima domanda. Devo ancora trovare un approccio che non sembri un trucco. – David
Questa domanda è simile e ha alcune buone risposte: http://stackoverflow.com/questions/30074/monitoring-files-how-to-know-when-a-file-is-completo – mfdoran