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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  While and for - No funcionan
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: While and for - No funcionan  (Leído 4,470 veces)
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
While and for - No funcionan
« en: 31 Agosto 2012, 16:37 pm »

Buenas.

Mirad, tengo un proyecto, que consiste en hacer un visitador de pagina web masivo. Tengo todo el código echo, pero no me va. He probado dos tipos de funciones pero ninguna de las dos, he leído y reeleido pero nada, así que he publicado.

Mirad, esto sería probando con While:
Código:
Navegador.navigate(txt_direccion.text)
        Button1.Hide()
        Button2.Show()
        total.text = 1
        Dim counter As Integer = 0
        While counter < 20
            counter += 1
            ' Insert code to use current value of counter.
            If total.Text = 1 Then Navegador.Refresh()
        End While

Pero solo se abre la pagina que has indicado y nada, ni se molesta en refrescarse.
Luego con FOR:
Código:
Navegador.navigate(txt_direccion.text)
        Button1.Hide()
        Button2.Show()
        total.text = 1
        Dim i As Integer = 0
        For i = 1 to 20
        If total.Text = 1 Then Navegador.Refresh()
       


En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: While and for - No funcionan
« Respuesta #1 en: 31 Agosto 2012, 17:28 pm »

el tema es que el webbrowser ejecuta tan rapido el .Refresh() que parece que no funciona.

para volver a cargar la pagina directamente ejecuta de nuevo el Navigate(), algo asi, esto funciona:

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        WebBrowser1.Navigate("http://www.google.com.ar")
  5.    End Sub
  6.  
  7.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  8.        For i As Integer = 1 To 20
  9.            WebBrowser1.Navigate("http://www.google.com.ar")
  10.  
  11.            Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete And WebBrowser1.IsBusy = False
  12.                Application.DoEvents()
  13.            Loop
  14.  
  15.            total.Text = i
  16.        Next
  17.    End Sub
  18. End Class

otra cosa que hace el codigo, y es vital, es preguntar si el webbrowser esta ocupado cargando la pagina, porque sino lo ejecuta tan rapido, que al no terminar de cargar la pagina parece que lo hace solo 1 ves, de esta forma te carga realmente 20 veces la pagina.

saludos.


En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: While and for - No funcionan
« Respuesta #2 en: 31 Agosto 2012, 17:53 pm »

Tienes razón, añadí un label que cada vez que se repetía el ciclo for sumara +1 de propiedad y lo sumó... Va tan rápido que no se ve.

He pensado que igual añadiendo
Código:
System.Threading.Thread.Sleep(1000)
como pausa de un segundo justo abajo de "next", hará que los comandos se ejecuten más bien y se pueda apreciar el refresh().

Saludos y thnx.
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: While and for - No funcionan
« Respuesta #3 en: 31 Agosto 2012, 20:39 pm »

al usar Sleep ya que traba toda la aplicacion (en este caso es solo 1 segundo asi que casi ni lo notas), pero mejor es usar Application.DoEvents para generar un retraso, y en ese retraso vas a poder mover la pantalla sin que se trabe.
En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: While and for - No funcionan
« Respuesta #4 en: 31 Agosto 2012, 23:31 pm »

al usar Sleep ya que traba toda la aplicacion (en este caso es solo 1 segundo asi que casi ni lo notas), pero mejor es usar Application.DoEvents para generar un retraso, y en ese retraso vas a poder mover la pantalla sin que se trabe.

A este comando se le pueden añadir segundos?
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: While and for - No funcionan
« Respuesta #5 en: 1 Septiembre 2012, 00:09 am »

personalmente utilizaria un timer
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: While and for - No funcionan
« Respuesta #6 en: 1 Septiembre 2012, 00:12 am »

A este comando se le pueden añadir segundos?

no se puede directamente, para simular una demora o pausa (tipo sleep pero sin que se trabe todo), debes hacer un bucle que ejecute el Application.DoEvents() y que termine cuando se cumpla una condicion, en este caso cuando se cumpla la cantidad de segundos que vos quieras, te haces una simple funcion y la llmas con los segundos como parametro, asi se hace tambien en visual basic 6,

aca te paso un ejemplo de pausa que no traba la aplicacion.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Pausa(ByVal pSegundos As Integer)
  4.        Dim vInicio As Integer = Environment.TickCount()
  5.        While ((Environment.TickCount() - vInicio) <= pSegundos)
  6.            Application.DoEvents()
  7.        End While
  8.    End Sub
  9.  
  10.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11.        For i As Integer = 1 To 30
  12.            TextBox1.Text = i
  13.            Call Pausa(1000)
  14.        Next
  15.    End Sub
  16. End Class

al apretar el boton se va sumando 1 al valor del textbox y con una pausa de 1 segundo, esta no traba la pantalla y podes mover los controles y la pantalla. sin embargo dicen que el DoEvents ocupa mucho procesador, pero bueno no creo que sea tan drastico. la otra es usar Threads.

saludos.
En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: While and for - No funcionan
« Respuesta #7 en: 1 Septiembre 2012, 01:05 am »

no se puede directamente, para simular una demora o pausa (tipo sleep pero sin que se trabe todo), debes hacer un bucle que ejecute el Application.DoEvents() y que termine cuando se cumpla una condicion, en este caso cuando se cumpla la cantidad de segundos que vos quieras, te haces una simple funcion y la llmas con los segundos como parametro, asi se hace tambien en visual basic 6,

aca te paso un ejemplo de pausa que no traba la aplicacion.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Pausa(ByVal pSegundos As Integer)
  4.        Dim vInicio As Integer = Environment.TickCount()
  5.        While ((Environment.TickCount() - vInicio) <= pSegundos)
  6.            Application.DoEvents()
  7.        End While
  8.    End Sub
  9.  
  10.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11.        For i As Integer = 1 To 30
  12.            TextBox1.Text = i
  13.            Call Pausa(1000)
  14.        Next
  15.    End Sub
  16. End Class

al apretar el boton se va sumando 1 al valor del textbox y con una pausa de 1 segundo, esta no traba la pantalla y podes mover los controles y la pantalla. sin embargo dicen que el DoEvents ocupa mucho procesador, pero bueno no creo que sea tan drastico. la otra es usar Threads.

saludos.

Gran función!:D Funciona a la perfección, gracias.

personalmente utilizaria un timer

Eso he echo xDDD
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: While and for - No funcionan
« Respuesta #8 en: 1 Septiembre 2012, 01:07 am »

DoEvents, es una opción siempre que no la vayas a usar por mucho tiempo, yo usaría Threads o Timers ;) DoEvents es más como para esperar eventos que están a punto de suceder a muy pocos segundos o milisegundos...
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No funcionan ni grabadora ni cd-rom
Software
PiRsiN78 1 2,028 Último mensaje 3 Junio 2004, 07:59 am
por Mordor
usuarios mariadb no funcionan en kloxomr7
GNU/Linux
gAb1 0 2,037 Último mensaje 13 Mayo 2016, 21:16 pm
por gAb1
Ahorrador de batería: ¿Funcionan?
Android
El_Andaluz 1 5,676 Último mensaje 13 Diciembre 2017, 16:49 pm
por PalitroqueZ
No funcionan mis auricularesinalambricos.
Dudas Generales
assw1208 2 3,324 Último mensaje 6 Mayo 2021, 13:24 pm
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines