Jump to content


Photo

¿Como analizar los archivos de una ruta recursivamente usando hilos?


  • Please log in to reply
2 replies to this topic

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 22 September 2022 - 01:04 PM

Hola a todos
Continuando con mi herramienta de limpieza de restos de virus, quisiera hacerla usando hilos para que funcione mas rápido, pero no estoy muy claro en como funciona el tema de los hilos

El algoritmo de mi herramienta es:
- Buscar recursivamente todos los archivos de la ruta especificada (en un hilo)
- Si el archivo es de las siguientes extensiones (.exe, .txt, .vbs o .lnk) pasarlo al proceso de análisis (otro hilo)
- Si cumple los patrones buscados agregarlo a una lista
- Después el usuario podrá seleccionarlos para eliminar los seleccionados o todos

No se si estará bien mi análisis, pero lo que quiero es que mientras se este analizando el archivo la búsqueda continúe.
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 23 September 2022 - 06:38 AM

delphi pone a tu disposición la clase TThread sobre la que derivarás tu hilo. En esta clase hay cosas importantes a tener en cuenta. El procedimiento Execute será el código que ejetutará tu hilo y donde debes implementar el código de búsqueda de archivos. Debes tener en cuenta que la VLC no es Thread-Safe por lo que para hacer uso de ella desde el hilo, deber usar Synchronize. En el foro hay documentación sobre esto.

Otra forma es usar la API CreateThread. Necesitarás implementar la función del hilo y usar unos parámetros que deben tener una vida similar a la del thread.

Si deseas que en tiempo real se rellene una lista con archivos que cumplan ciertas caracteristicas, quizás lo más fácil sea usar TThread y Synchronize para acceder a un TStringList. Con un solo hilo debe bastar.

Si el usuario ha de esperar de todas formas, piensa que es posible que usar Threads pierda el sentido, a no ser que el usuario necesite hacer otras tareas mientras se completa el hilo.

En definitiva, es importante que decidas bien el diseño y como lo verá el usuario.


Saludos.
  • 0

#3 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 24 September 2022 - 02:02 PM

delphi pone a tu disposición la clase TThread sobre la que derivarás tu hilo. En esta clase hay cosas importantes a tener en cuenta. El procedimiento Execute será el código que ejetutará tu hilo y donde debes implementar el código de búsqueda de archivos. Debes tener en cuenta que la VLC no es Thread-Safe por lo que para hacer uso de ella desde el hilo, deber usar Synchronize. En el foro hay documentación sobre esto.

Otra forma es usar la API CreateThread. Necesitarás implementar la función del hilo y usar unos parámetros que deben tener una vida similar a la del thread.

Si deseas que en tiempo real se rellene una lista con archivos que cumplan ciertas caracteristicas, quizás lo más fácil sea usar TThread y Synchronize para acceder a un TStringList. Con un solo hilo debe bastar.

Si el usuario ha de esperar de todas formas, piensa que es posible que usar Threads pierda el sentido, a no ser que el usuario necesite hacer otras tareas mientras se completa el hilo.

En definitiva, es importante que decidas bien el diseño y como lo verá el usuario.


Saludos.

Analizandolo mejor, tienes razon, no vale la pena usar hilos, pues los procesos de analisis de patrones de los archivos estan por debajo de 1 segundo.

Edited by escafandra, 24 September 2022 - 04:15 PM.

  • 0




IP.Board spam blocked by CleanTalk.