¿Como analizar los archivos de una ruta recursivamente usando hilos?
#1
Escrito 22 septiembre 2022 - 01:04
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.
#2
Escrito 23 septiembre 2022 - 06:38
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.
#3
Escrito 24 septiembre 2022 - 02:02
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.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.
Editado por escafandra, 24 septiembre 2022 - 04:15 .