Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: bomba1990 en 27 Junio 2010, 20:19 PM

Título: programa se tranca
Publicado por: bomba1990 en 27 Junio 2010, 20:19 PM
hago uan consulta para ver si alguien me peude ayudar. estoy haciendo un programa que tiene que analizar muchas cosas y a veces se pega trabajando porque es mucha informacion. Aunque el termian de ahcer su trabajo y culmina con exito.

A mi me gustaria que mientras el se pega por lo menos pudiera ir mostrando una barra de progreso o algo por el estilo y no logro hacer que lo haga, e tratado con u label que vaya mostrando el progreso pero el programa no logra mostrar nada porque se pega.

¿que solucion podria tener este problema?
Título: Re: programa se tranca
Publicado por: Maik33 en 27 Junio 2010, 20:29 PM
Seguramente uses un bucle, si pones DoEvents en el, cre que funcionara
Título: Re: programa se tranca
Publicado por: Crypto 136 en 27 Junio 2010, 20:32 PM
Creo que deberias agregar mas detalles sobre esa aplicacion, pero te recomiendo que hagas el programa en partes, optimiza el codigo, trata de poner la menor cantidad de codigo en la funcion principal,crea mas funciones y separa todo para que no recargues la memoria creo que es lo que se me ocurre con los datos que nos das...
Título: Re: programa se tranca
Publicado por: bomba1990 en 28 Junio 2010, 03:22 AM
bueno por ejemplo una parte del programa se encarga de listar los directorios y agregarlos en una base de datos. con pocos archivos puede ser rapido, pero con 20000 archivos se echa su ratica como unos 3min. Pero a mi me gustaria que en esos 3min yo pueda poner un label o halgo que valla imprimeindo como va el progreso del programa. Es todo lo que quiero, aqui esta el codigo:


Código (vb) [Seleccionar]
Public Function Listar_Directorios(directorio As String)
Dim Subdirectorio As Folder
Dim ruta As String
Dim ext As String


    Set El_Directorio = fso.GetFolder(Trim$(directorio))
   
    If existe("archivos", "ruta", directorio) Then Else ejecutar ("INSERT INTO `archivos` (`ruta`, `carpeta` )VALUES ('" & seguridad(directorio) & "', 1) ")
   
    For Each El_Archivo In El_Directorio.Files
        ruta = El_Directorio.Path & "\" & El_Archivo.Name
        If existe("archivos", "ruta", ruta) Then
        Else
        ext = extensión(El_Archivo.Name)
        ejecutar ("INSERT INTO `archivos` (`ruta`, `extensión`, `tamaño` )VALUES ('" & seguridad(ruta) & "', '" & ext & "', '" & FileLen(ruta) & "') ")
        End If
    Next El_Archivo

    For Each Subdirectorio In El_Directorio.SubFolders
        ruta = El_Directorio.Path & "\" & Subdirectorio.Name
        If existe("archivos", "ruta", ruta) Then Else ejecutar ("INSERT INTO `archivos` (`ruta`, `carpeta` )VALUES ('" & seguridad(ruta) & "', 1) ")
        Listar_Directorios (Subdirectorio)
    Next
   

   
End Function
Título: Re: programa se tranca
Publicado por: Psyke1 en 28 Junio 2010, 03:37 AM
Agregas una ProgressBar y pones esto:
Código (vb) [Seleccionar]
ProgressBar1.Max = El_Directorio.Files
Y dentro del bucle pones:
Código (vb) [Seleccionar]
ProgressBar1.Value = El_Archivo

Salu2! ;)
Título: Re: programa se tranca
Publicado por: bomba1990 en 28 Junio 2010, 04:48 AM
Gracias, lo puse en prueba y funciona, bien bien. no se tranca por lo menos gracias.
Título: Re: programa se tranca
Publicado por: BlackZeroX en 28 Junio 2010, 08:42 AM
Cita de: *PsYkE1* en 28 Junio 2010, 03:37 AM
Agregas una ProgressBar y pones esto:
Código (vb) [Seleccionar]
ProgressBar1.Max = El_Directorio.Files
Y dentro del bucle pones:
Código (vb) [Seleccionar]
ProgressBar1.Value = El_Archivo

Salu2! ;)

Código (vb) [Seleccionar]
ProgressBar1.Max = El_Directorio.Files

si El_Directorio.Files es mayor de lo que puede aceptar ProgressBar1.Max va a hacer un OverFlow es mejor una regla de tres xP

Donde:

Código (Vb) [Seleccionar]

    ProgressBar1.Max = 30000 ' // = Cantidad de Archivos "Dejar 30000" para calcular con regla de tres.
'   //  Por lo tanto para calcular el value
    with ProgressBar1
        .value = NumeroArchivoActual * .max / El_Directorio.Files
    end with


Sangriento Infierno Lunar!¡.
Título: Re: programa se tranca
Publicado por: Psyke1 en 28 Junio 2010, 09:01 AM
Cita de: BlackZeroX▓▓▒▒░░ en 28 Junio 2010, 08:42 AM
Cita de: *PsYkE1* en 28 Junio 2010, 03:37 AM
Agregas una ProgressBar y pones esto:
Código (vb) [Seleccionar]
ProgressBar1.Max = El_Directorio.Files
Y dentro del bucle pones:
Código (vb) [Seleccionar]
ProgressBar1.Value = El_Archivo

Salu2! ;)

Código (vb) [Seleccionar]
ProgressBar1.Max = El_Directorio.Files

si El_Directorio.Files es mayor de lo que puede aceptar ProgressBar1.Max va a hacer un OverFlow es mejor una regla de tres xP

Donde:

Código (Vb) [Seleccionar]

    ProgressBar1.Max = 30000 ' // = Cantidad de Archivos "Dejar 30000" para calcular con regla de tres.
'   //  Por lo tanto para calcular el value
    with ProgressBar1
        .value = NumeroArchivoActual * .max / El_Directorio.Files
    end with


Sangriento Infierno Lunar!¡.

JAJAJAJJAJA :laugh:
Cierto!!
Se me paso por completo!! :¬¬

Salu2! :P