| 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 |
| |
|
|
|