Mostrar progreso de algoritmo en barra de progeso
He hecho un algoritmo muy simple en el que selecciono aleatoreamente 10 números entre 1 y 9 de entre 30.000, bien, tengo un picturebox en el que voy dibujando el progreso del algoritmo, es decir, cada vez que encuentro un número dibujo en el picturebox (igual que un ProgressBar) y muestro el porcentaje completado.
Este proceso lo hace bien, el fallo está en que cuando se inicia el algoritmo el ordenador se queda pensando y una vez ha encontrado los 10 números me muestra la barra de progreso completa, con el 100%. Yo lo que quiero es ir viendo como va aumentando el porcentaje completado a medida que va encontrando números pero sólo me lo muestra cuando ha acabado el algoritmo. Probé a hacerlo con un progressbar y pasaba lo mismo, sólo lo mostraba cuando encuentra los 10 números, no durante la ejecución del algoritmo.
El código que utilizo es este:
Dim c1, c2, i, aNum(10) As Byte
Dim c3 As Integer
Text1 = ""
For c1 = 0 To 9
aNum(c1) = 0
Next c1
i = 0
For c1 = 0 To 9
c2 = 99
Do While c2 = 99
Randomize
c3 = Int((29999 * Rnd) + 1)
If c3 < 10 And c3 > 0 Then
c2 = c3
aNum(c1) = c2
End If
Loop
i = i + 10
Call Dibujar(pctBarra, i, True)
Text1 = Text1 & "..." & CStr(aNum(c1))
Next c1
PctBarra es el picturebox donde muestor el porcentaje y Text1 es un textbox donde muestro los números encontrados.
¿Cómo puedo hacer para que me vaya enseñando los números y el porcentaje poco a poco y no al finalizar?
Este proceso lo hace bien, el fallo está en que cuando se inicia el algoritmo el ordenador se queda pensando y una vez ha encontrado los 10 números me muestra la barra de progreso completa, con el 100%. Yo lo que quiero es ir viendo como va aumentando el porcentaje completado a medida que va encontrando números pero sólo me lo muestra cuando ha acabado el algoritmo. Probé a hacerlo con un progressbar y pasaba lo mismo, sólo lo mostraba cuando encuentra los 10 números, no durante la ejecución del algoritmo.
El código que utilizo es este:
Dim c1, c2, i, aNum(10) As Byte
Dim c3 As Integer
Text1 = ""
For c1 = 0 To 9
aNum(c1) = 0
Next c1
i = 0
For c1 = 0 To 9
c2 = 99
Do While c2 = 99
Randomize
c3 = Int((29999 * Rnd) + 1)
If c3 < 10 And c3 > 0 Then
c2 = c3
aNum(c1) = c2
End If
Loop
i = i + 10
Call Dibujar(pctBarra, i, True)
Text1 = Text1 & "..." & CStr(aNum(c1))
Next c1
PctBarra es el picturebox donde muestor el porcentaje y Text1 es un textbox donde muestro los números encontrados.
¿Cómo puedo hacer para que me vaya enseñando los números y el porcentaje poco a poco y no al finalizar?
1 Respuesta
Respuesta de aja72
1