Pos eso q no soy capaz d entenderlos, y x lo tando d usarlos.
Esto es lo q estoy haciendo con VB.Net 2005
Es un programilla para descargarme unos ficheros de un servidor
Tengo un ListView con 3 Columnas y un boton de descargar (btn_Descargar)
Fichero, Ruta del Fichero y Comentarios
Imports System.IO
Imports System.net
Imports System.Text
Imports System.Threading
Public Class Form1
Dim Fichero As String
Dim Ruta as string
dim RutaLocal as String = "c:\descarga\"
Dim lwItem As ListViewItem
Dim myThreadDelegate As New ThreadStart(AddressOf Descargar2)
Dim myThread As New Thread(myThreadDelegate)
Private Sub btn_Descargar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Descargar.Click
If lst_Ficheros.CheckedItems.Count > 0 Then
myThread = New Thread(myThreadDelegate)
myThread.Start()
End If
End Sub
Private Sub Descargar()
For Each lwItem In Me.lst_Ficheros.CheckedItems
lwItem.EnsureVisible()
Fichero = lwItem.SubItems(0).Text
Ruta = lwItem.SubItems(1).Text
Try
Dim req As HttpWebRequest
Dim Pilla As String = "http://" & Ruta & Fichero
Dim u As New Uri(Pilla)
req = HttpWebRequest.Create(u)
req.Method = "GET"
Try
If Dir(RutaLocal & Fichero) = "" Then
Dim ar As IAsyncResult = req.BeginGetResponse(AddressOf Descargar2,
req)
lwItem.BackColor = Color.LightGreen
Descargando = True
Do
If ar.IsCompleted Then
Exit Do
End If
Loop
End If
Catch ex As Exception
End Try
Catch ex As Exception
End Try
Do While Descargando
Loop
lwItem.BackColor = Color.White
If Excepcion Then
lwItem.ForeColor = Color.Red
Else
lwItem.ForeColor = Color.Green
End If
Excepcion = False
lwItem.Checked = False
Next
End Sub
Private Sub Descargar2(ByVal ar As IAsyncResult)
Dim rsp As WebResponse
Try
rsp = CType(ar.AsyncState, HttpWebRequest).EndGetResponse(ar)
Dim st As Stream = rsp.GetResponseStream()
Dim cbRead As Int32 = 0
Dim wrt As FileStream = New FileStream(RutaLocal & Fichero & "_",
FileMode.Create)
Dim buffer(1024) As Byte
Do
cbRead = st.Read(buffer, 0, 1024)
If cbRead = 0 Then Exit Do
wrt.Write(buffer, 0, cbRead)
Loop
wrt.Close()
Rename(RutaLocal & Fichero & "_", RutaLocal & Fichero)
rsp.Close()
Catch ex As Exception
Excepcion = True
End Try
Descargando = False
End Sub
end class
Cuado pulso el boton de descargar (btn_Descargar)
Me lanza este error:
Cross-thread operation not valid: Control 'lstFichero' accessed from a
thread other than the thread it was created on.
He impreso ¿ o imprimido ? el ejemplo, pero no me entero de ná, lo siento q
lo voy ha hacer si soy asi de negao
Lo q quiero es hacer una especie de gestor de descargas, que permita
descargar varios ficheros a la vez, pero si no soy capaz de hacer q
descarga uno, ya me direis.
Si el codigo del evento de btn_Descargar lo cambio por Call Descargar,
descarga perfectamente, pero no puedo seguir haciendo nada mas con el
programa.
Necesito un guia, guru, o alguien q me ilumine.
Ch0rY
Leer las respuestas