¿Como analizar los archivos de una ruta recursivamente usando hilos?
#1
Posted 22 September 2022 - 01:04 PM
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
Posted 23 September 2022 - 06:38 AM
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
Posted 24 September 2022 - 02:02 PM
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.
Edited by escafandra, 24 September 2022 - 04:15 PM.