Domanda

Ecco lo scenario:

Sto scrivendo un'app che controllerà eventuali modifiche in una directory specifica.Questa directory sarà invasa da migliaia di file al minuto, ciascuno con un GUID "quasi" unico.Il formato del file è questo:

GUID.DAT WHERE GUID == XXXXXXXXXXXXXXXXXXXXXXXXXXXX (I contenuti interni non sono rilevanti, ma sono solo dati di testo)

La mia app sarà un modulo con un'unica casella di testo che mostra tutti i file che vengono aggiunti ed eliminati in tempo reale.Ogni volta che arriva un nuovo file devo aggiornare la casella di testo con questo file, MA devo prima assicurarmi che questo GUID semi-univoco sia davvero unico, se lo è, aggiornare la casella di testo con questo nuovo file.

Quando un file viene rimosso da quella directory, assicurati che esista, quindi eliminalo e aggiorna la casella di testo di conseguenza.

Il problema è che sto utilizzando il filewatcher .NET e sembra che ci sia un buffer interno che viene fatto esplodere ogni volta che arriva il file (buffersize + 1) -esimo.Ho anche provato a mantenere un elenco interno nella mia app e ad aggiungere semplicemente ogni singolo file in arrivo, ma in seguito eseguo il controllo del GUID univoco, ma senza dadi.

È stato utile?

Soluzione

Un paio di cose che ho in testa:

  • Se la guida è non unico, non sovrascriverebbe il file con lo stesso nome, oppure il controllo è basato su una ricerca che esegue alcune azioni esterne (ad es.controllare l'archivio)?(cioè.è questo un momento YAGNI?)
  • Ho già utilizzato FileSystemWatcher con discreto successo, puoi darci qualche idea al riguardo Come stai davvero facendo delle cose?
  • Quando dici "niente dadi" mentre lavori con la tua lista personalizzata, qual era il problema?E come stavi controllando le modifiche al file system senza FileSystemWatcher?!

Mi spiace, non ho ancora ricevuto risposta, vorrei solo sapere di più sul problema :)

Altri suggerimenti

Ti suggerisco di dare un'occhiata a SHChangeNotify Chiamata API, che può avvisarti di tutti i tipi di eventi della shell.Per monitorare l'attività di creazione ed eliminazione dei file, potresti voler prestare particolare attenzione agli argomenti SHCNE_CREATE e SHCNE_DELETE.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top