Ir al contenido


Foto

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


  • Por favor identifícate para responder
2 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

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

Escrito 22 septiembre 2022 - 01:04

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
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 23 septiembre 2022 - 06:38

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 mensajes
  • LocationPinar del Río, Cuba

Escrito 24 septiembre 2022 - 02:02

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.

Editado por escafandra, 24 septiembre 2022 - 04:15 .

  • 0




IP.Board spam blocked by CleanTalk.