elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  refresh de formulario
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: refresh de formulario  (Leído 3,339 veces)
g_cury

Desconectado Desconectado

Mensajes: 2


Ver Perfil
refresh de formulario
« en: 2 Octubre 2018, 17:48 pm »

Gente, tengo un programa viejo en VB6 que me hace una actualización de base de datos desde un archivo plano txt, la cosa que dicho proceso dura aproximadamente 15 o 20 minutos o mas y el usuario que usa esta aplicación como es impaciente a los minutos me aborta el programa creyendo que esta colgado por lo que me genera numerosos inconvenientes. La idea es generar un contador de lineas para que el usuario vea que el proceso esta corriendo y tenga idea de cuantas lineas falta para terminar el proceso, el problema me radica que le he puesto un contador en un timer e inclusive en el loop del copiado de lineas hacia la base de datos pero nunca logro que me refresque el formulario, a lo sumo me lo refresca los primeros 10 segundos y después como que cuelga y no refresca mas aunque el proceso sigue en segundo plano pero la interface de la aplicación aparece como colgada (con el mensaje de no responde). Alguna idea para ayudarme. (abstenerse los que como solución tengan migrar a .net). Uso sistemas operativos XP y 7. Gracias a los que me puedan ayudar


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: refresh de formulario
« Respuesta #1 en: 3 Octubre 2018, 01:20 am »

Tienes que forzar un 'refresh'... pero mejor que dentro del bucle (que puede ralentizar aún más la operación y que puede depender de cuanto tarde en ejecutarse cada ciclo, es usar un timer.... ajustando su evento a 1 segundo (timProgreso.Interval = 1000)...
Cada minuto, al mismo tiempo actualizas el formulario completo, suele ponerse en blanco...

Código
  1. Private Sub TimProgreso_Timer()
  2.    Static segs As Byte
  3.  
  4.    ' Si usas un progressbar....
  5.    progressbar.Value = X ' este será un valor relativo previamente calculado en el bucle
  6.    progressbar1.Refresh  
  7.  
  8.    ' O si usas un simple label o textbox...
  9.    labprogreso.Caption = "Registro: " & cstr(x)  & " de " & cstr(y)
  10.    labprogreso.Refresh
  11.    DoEvents
  12.  
  13.    segs = (segs + 1)
  14.    If (segs = 60) Then  ' Cada minuto, refresca todo el formulario...
  15.        segs = 0
  16.        form1.Refresh
  17.        DoEvents
  18.    End If
  19. End Sub
  20.  

Nota que no afectamos al bucle, así puede ser llamado desde diferentes funciones que tengan tareas pesadas, en vez de meter código excesivo en cada función, simplemente antes del bucle ponemos el timer en marcha (ponemos a cero el valor de la barra de progreso, etc...), y al término lo desactivamos (y ocultamos el control encargado de mostrar el progreso), vamos que se necesita una función con un parámetro de activación y alguno opcional para señalar el valor máximo y mínimo al comienzo y tal vez el valor de avance) ... El contador del bucle debería ser accesible, es decir declarado a nivel de módilo, para que el timer lo tenga disponible.

En fin, no creo que haga falta señalar detalles específicos...


En línea

gundream

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: refresh de formulario
« Respuesta #2 en: 31 Octubre 2018, 22:15 pm »

¿En serio tarda más de 20 minutos? ¿Y dices que el usuario es impaciente por cerrarlo?  :silbar:

Con todo el respeto, si tienes 20 minutos colgado un programa creo que deberías replantearte el código. Si quieres ponlo en el foro y le echamos un vistazo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como utilizar swing de un formulario desde otro formulario???????
Java
h@lv@88 2 4,898 Último mensaje 9 Junio 2008, 00:59 am
por h@lv@88
Duda con refresh
PHP
NaSaRiD15 4 2,639 Último mensaje 5 Septiembre 2008, 18:49 pm
por Azielito
Refresh connections
Programación Visual Basic
ntaryl 0 1,505 Último mensaje 14 Enero 2010, 23:22 pm
por ntaryl
how to refresh the ping
Programación Visual Basic
ntaryl 4 2,647 Último mensaje 18 Noviembre 2010, 22:47 pm
por ntaryl
Refresh Windows Tool: herramienta Microsoft para limpiar Windows 10
Noticias
wolfbcn 0 2,703 Último mensaje 16 Junio 2016, 14:59 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines