alberto-moyano   26-03-2025, 00:42
#1
Hola gente, en un formulario de mi aplicación tengo un DirView y un FileView que se posicionan sobre el directorio raiz de mi proyecto (un libro) y me permiten ver la evolución de crear/borrar carpetas y archivos, el tema es que la compilación de archivos de LaTeX que manejen varios índices, glosarios y muchas referencias se hace en varias pasadas, por lo general 5 en la que se generan varios archivos auxiliares, muchos de ellos se generan como resultado de otros archivos auxiliares, en fin, una lista muy grande de crear, modificar y borrar archivos de texto plano. Los componentes muestran/actualizan el desarrollo, pero a veces --y acá viene el problema-- los componentes muestran los iconos de los archivos con un candado amarillo (en mi linux mint) que significa que el archivo esta borrado, y es tal cual, si voy via filemanager a ver la carpeta del proyecto, no hay errores en cuanto a que archivos tengo realmente.

Estoy aplicando un refresh y un reload a los componentes, pero ni modo, de manera totalmente aleatoria cada tanto pasa lo comentado anteriormente, si cierro la aplicación al reabrirla se soluciona el problema.

Pregunta: ¿es una limitación del componente la velocidad de refresco?, digo, son muchisimos archivos todos muuuy pequeños, o es un error de como estoy aplicando el refresco, lo hago con este código (además de hacer un refresh y un reload despúes de compilar) al final de cada funcion de compilación.

Código:
' Evento que se ejecuta cuando se detecta un cambio en el directorio
Public Sub Watcher_Change()

  DirViewRuta.Root = File.Dir(TextBox1.Text)' reforzamos la indicación de la ruta
  DirViewRuta.Refresh
  DirView.Reload

End


Gracias de antemano por cualquier sugerencia
Última modificación: 26-03-2025, 00:45 por alberto-moyano.
Shordi   26-03-2025, 09:55
#2
Nunca me he enfrentado a ese problema, pero me recuerda a otros que sí he tenido. El problema suena a que el S.O. no tiene suficiente tiempo para comunicar los cambios. Te aconsejo intercalar un wait después de la creación de cada archivo. Puede ser tan rápido como wait 0.01... pero debes dar tiempo al S.O. a refrescar la información del disco. Ya nos cuentas.

Saludos

No podemos regresar
tincho   26-03-2025, 18:40
#3
Coincido con Shordi con lo de poner un wait peo, en el caso de comandos shell para crear o borrar archivos, conviene poner un wait en la misma linea al final del comando sin especificar tiempo, de esa manera esperara a que el proceso termine antes de seguir.

1 Saludo.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.