El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Visual Basic/VB.NET
Foros del Guru > Visual Basic/VB.NET
 
Usuario Manejando eventos
Desconocido
Enviado - 3/3/2005
 
Saludos Gurus...

Tengo una Clase para bajar archivos via Web, ésta tiene un evento llamado cuantoVa donde se da el valor de cuantos bytes se han bajado y cuanto es en total. Desde un fomrulario pretendo consumir este evento. Tengo un progressbar y un label. El progressbar lo voy incrementando segun va ocurriendo el evento cuantoVa que esta asociado a la funcion cambiarProgreso.
Todo bien hasta aqui, el problema es que no puedo hacer que cambie el texto del label donde quiero indicar cuantos bytes se han descargado. No veo el problema, al ejecutarse la funcion cambiarProgeso, incremento el progressBar y cambio el label... solo que no cambia el label. Si ha alguno le ha pasado algo parecido o sabe si estoy cometiendo un error por favor me indique...

Saludos... =)


LA CLASE
-----------------------------------
Imports System.IO
Imports System.Net
Imports System.Text

Public Class DescargaArchivo

Public Event cuantoVa(ByVal nbytes As Integer, ByVal nbytesTotal As Integer)

Public webDir As String
Public webArch As String

Public Sub Main()
Dim wr As HttpWebRequest = CType(WebRequest.Create(webDir + "/" + webArch), HttpWebRequest)
Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)

Dim str As Stream = ws.GetResponseStream()

'Defino el buffer del tamaño del archivo
Dim inBuf(ws.ContentLength) As Byte

Dim bytesToRead As Integer = CInt(inBuf.Length)
Dim bytesRead As Integer = 0

While bytesToRead > 0
Dim n As Integer = str.Read(inBuf, bytesRead, bytesToRead)
If n = 0 Then
Exit While
End If
bytesRead += n
bytesToRead -= n

RaiseEvent cuantoVa(bytesRead, ws.ContentLength)

End While

Dim fstr As New FileStream(webArch, FileMode.OpenOrCreate, FileAccess.Write)
fstr.Write(inBuf, 0, bytesRead)
str.Close()
fstr.Close()

End Sub 'Main
End Class


PARTE DEL FORM
---------------------------------------------

Try
Dim objDescarga As New DescargaArchivo.DescargaArchivo
AddHandler objDescarga.cuantoVa, AddressOf cambiarProgreso
objDescarga.webDir = "http://localhost/deposito"
objDescarga.webArch = "docs.rar"
objDescarga.Main()
objDescarga = Nothing

MsgBox("Archivo Descargado", MsgBoxStyle.Information)

Catch ex As Exception

MsgBox("Error al bajar el archivo", MsgBoxStyle.Exclamation)

End Try
End Sub

Public Sub cambiarProgreso(ByVal nBytes As Integer, ByVal nBytesTotal As Integer)

Dim porcent As Decimal

porcent = (nBytes * 100) / nBytesTotal
If porcent > 100 Then
porcent = 100
End If

descargandoLabel.Text = (nBytesTotal / 1024).ToString("# Kbytes")

barraDownProgreso.Value = porcent

End Sub
 
Desconocido
Enviado - 10/5/2005
 
Cuando visualices la etiqueta pon un DoEvents
para que te actualice la etiqueta.

label.caption=valor
doevents
 
Desconocido
Enviado - 14/9/2005
 
Hola! Simplemente quería ver si alguno tiene un código vb.net para descargar una página web y guardar el HTML resultante en un String, para luego poder tratarlo. Sé que se hace con HTTPRequest y HTTPResponse, pero no sé muy muy cómo manejar la respuesta... ¿Alguien puede ayudarme?

Muchas gracias.

Javi
 
 

 

Contactos myStudio Network