Pregunta

Aquí está el escenario:

Estoy escribiendo una aplicación que observará cualquier cambio en un directorio específico.Este directorio se verá inundado de miles de archivos por minuto, cada uno con un GUID "casi" único.El formato del archivo es este:

GUID.DAT WHERE GUID == XXXXXXXXXXXXXXXXXXXXXXXXXXXXX (los contenidos internos no son relevantes, pero son solo datos de texto)

Mi aplicación será un formulario que tendrá un solo cuadro de texto que mostrará todos los archivos que se agregan y eliminan en tiempo real.Cada vez que llega un archivo nuevo, tengo que actualizar el cuadro de texto con este archivo, PERO primero debo asegurarme de que este GUID semi-único sea realmente único; si lo es, actualice el cuadro de texto con este nuevo archivo.

Cuando se elimina un archivo de ese directorio, asegúrese de que exista, luego elimínelo y actualice el cuadro de texto en consecuencia.

El problema es que he estado usando el observador de archivos .NET y parece que hay un búfer interno que explota cada vez que entra el (tamaño del búfer + 1) -ésimo archivo.También intenté mantener una lista interna en mi aplicación y simplemente agregar cada archivo que ingresa, pero hago la verificación del GUID único más tarde, pero no hay dados.

¿Fue útil?

Solución

Un par de cosas que tengo en la cabeza:

  • Si la guía es no Único, ¿no sobrescribiría el archivo con el mismo nombre, o la verificación se basa en una búsqueda que realiza alguna acción externa (p. ej.consultar el archivo)?(es decir.¿Es este un momento YAGNI?)
  • He usado FileSystemWatcher antes con bastante éxito, ¿puede darnos algunas ideas sobre cómo hacerlo? cómo ¿Realmente estás haciendo cosas?
  • Cuando dices "sin dados" cuando trabajas con tu lista personalizada, ¿cuál fue el problema?¿Y cómo buscabas cambios en el sistema de archivos sin FileSystemWatcher?

Lo sentimos, todavía no hay respuesta, solo me gustaría saber más sobre el problema :)

Otros consejos

Te sugiero que eches un vistazo a SHCambiarNotificar Llamada API, que puede notificarle sobre todo tipo de eventos de shell.Para monitorear la actividad de creación y eliminación de archivos, es posible que desee prestar especial atención a los argumentos SHCNE_CREATE y SHCNE_DELETE.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top