Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
[Solucionado] Ejecucion De Proceso Que No Bloquee El Formulario
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [Solucionado] Ejecucion De Proceso Que No Bloquee El Formulario 
 
Hola chicos,

Por asuntos de trabajo me he ausentado un tiempo de las lides de gambas nuestra herramienta de trabajo.

Ahora que en chile tenemos un fin de semana largo gracias a las fiestas patrias trabajare en la herramienta Sycnapsis que diseñe para crear copias de directorios ya que quedo un poco "chapucera" como dicen ustedes en españa.

Ahora a la pregunta.
Diseñe la aplicación para que al presionar el botón de comparación de directorios y determinar que hacer con cada archivo o directorio vaya mostrando el avance de la revisión gracias a la instrucción WAIT. Eso quedo cool ya que muestro una barra de progreso y el archivo en revisión.

el problema que se me presento fue que, cuando corrí el proceso para un directorio con una biblioteca gigante de Ebooks que me conseguí por ahí, con mas de 15mil libros y sus respectivos directorios y archivos asociados resultaron en mas de 45mil registros a revisar. y se quedo pegada la app sin poder hacer nada con ella.

Lo único que tengo claro es que cuando este corriendo el proceso debo preguntar por un flag/variable que me señale que quieren cancelarlo para abortar.
No tengo ninguna idea de como lograr lo anterior y que no quede bloqueada cuando el usuario se enfrente a una situación familiar.

Acepto ideas.
 




===================
------
Telegram : @sepulvedamarcos
 
última edición por chaskux el Viernes, 22 Septiembre 2017, 16:38; editado 2 veces 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
No es nada difícil: Si añades un retardo a wait, (el mínimo, creo es 0.001) das oportunidad a otros controles de ejecutar su evento.
Es decir, cada vez que se hace wait, se termina todo proceso pendiente en el bucle de eventos y ahí puedes cancelar el proceso que deseas terminar.
Como un ejemplo vale más que mil palabras, te he hecho un pequeño proyecto que lista un directorio de manera recursiva con una barra de progreso sobre el número de ficheros que contiene cada directorio y lo muestra en un TextArea. Pulsando el botón "Cancelar", finalizas la tarea a medias.
 captura_de_pantalla_de_2017_09_15_18_47_37

ListaFicheros-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ListaFicheros-0.0.1.tar.gz
Tamaño: 11.75 KB
Descargado: 18 veces
ListaFicheros-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ListaFicheros-0.0.1.tar.gz
Tamaño: 11.75 KB
Descargado: 18 veces
ListaFicheros-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ListaFicheros-0.0.1.tar.gz
Tamaño: 11.75 KB
Descargado: 18 veces

 




===================
No podemos regresar
 
última edición por shordi el Viernes, 15 Septiembre 2017, 17:48; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
Este es el código del Formulario:

Private bCancel As Boolean

Public Sub Button2_Click()

  bCancel = True

End

Public Sub DirBox1_Change()

  listado(DirBox1.Value)
    bCancel = False

End

Public Sub listado(path As String)

    Dim arDir As String[]
    Dim arFile As String[]
    Dim nombredir, nombrefile As String
    Dim nombresolo As String
    Dim n As Integer
    
    If bCancel Then Return
    arfile = Dir(path, "*", gb.file)  'extraemos los ficheros
    For Each nombrefile In arfile  
         Inc n
         TextArea1.text &= path &/ nombrefile & gb.newLine
         ProgressBar1.Value = n / arfile.Count
         Wait 0.001
         If bCancel Then Break
    Next
    n = InStr(path, "/")
    If n > 0 Then
        nombresolo = Right(path, - n + 1)
    Else
        nombresolo = path
    Endif
    ardir = Dir(path, "*", gb.Directory)
    For Each nombredir In arDir 'extraemos los subdirectorios
         TextArea1.text &= path &/ nombredir & gb.newLine
         Wait 0.001
         If bCancel Then Break
         listado(path &/ nombredir) 'usamos la recursividad
    Next
    
 Catch
    Message("Error: " & Error.Text & "\nEn: " & Error.where)

End

 

 




===================
No podemos regresar
 
última edición por shordi el Viernes, 15 Septiembre 2017, 17:51; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
Por cierto... mi biblioteca ya tiene 54.212 libros... y subiendo.

     
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
shordi escribió: [Ver mensaje]
No es nada difícil: Si añades un retardo a wait, (el mínimo, creo es 0.001) das oportunidad a otros controles de ejecutar su evento.
Es decir, cada vez que se hace wait, se termina todo proceso pendiente en el bucle de eventos y ahí puedes cancelar el proceso que deseas terminar.
Como un ejemplo vale más que mil palabras, te he hecho un pequeño proyecto que lista un directorio de manera recursiva con una barra de progreso sobre el número de ficheros que contiene cada directorio y lo muestra en un TextArea. Pulsando el botón "Cancelar", finalizas la tarea a medias.
 captura_de_pantalla_de_2017_09_15_18_47_37




Excelente.... llegando a casa lo pruebo.... puede ser que el wait que tengo este muy corto por que los botones de verdad es que no se pueden presionar....

Gracias
 




===================
------
Telegram : @sepulvedamarcos
 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
shordi escribió: [Ver mensaje]
Por cierto... mi biblioteca ya tiene 54.212 libros... y subiendo.

     



buen trabajo... los tienes en que formato???... yo los tenfo en EPUB... con calibre los transformo a mobi cuando necesito leerlos... (estoy viendo la compra de un nook para leer directo en epub).
 




===================
------
Telegram : @sepulvedamarcos
 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
Epub, epub, por supuesto. Mi Kobo se los devora que da gusto      
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
Podes usar matrices de texto para poner los archivos que vas a revisar o sobre los que vas a actuar y luego controlas el proceso con el numero de avance. Te dejo un ejemplo.

Saludos.

cortar-for-next-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: cortar-for-next-0.0.1.tar.gz
Tamaño: 11.98 KB
Descargado: 24 veces
cortar-for-next-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: cortar-for-next-0.0.1.tar.gz
Tamaño: 11.98 KB
Descargado: 24 veces
cortar-for-next-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: cortar-for-next-0.0.1.tar.gz
Tamaño: 11.98 KB
Descargado: 24 veces

 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
Uff, el ejemplo que subí es supero rudimentario comparado con el de Shordi, bueno espero sirva de algo.

Respecto a los formatos, si es un reader que no soporta epub no te lo compres. Sony, Kobo y unos cuantos mas lo soportan.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecucion De Proceso Que No Bloquee El Formulario 
 
Shordi usando recursividad   ...más peligroso que un barbero con hipo!.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Cambiar El TextBox De Un Formulario, Con E... CanihoJR General 14 Sabado, 17 Octobre 2009, 16:51 Ver último mensaje
david
No hay nuevos mensajes Reiniciar Formulario(Solucionado) Dani26 General 7 Jueves, 24 Junio 2010, 02:50 Ver último mensaje
Dani26
No hay nuevos mensajes Componer Un Formulario Y Sus Componentes [... gambafeliz General 4 Jueves, 19 Septiembre 2019, 16:08 Ver último mensaje
gambafeliz
No hay nuevos mensajes Formulario Transparente [Solucionado] gambafeliz General 4 Domingo, 22 Septiembre 2019, 13:36 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 2 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron