Blog Stats
  • Posts - 13
  • Articles - 0
  • Comments - 7
  • Trackbacks - 0

 

domenica 27 settembre 2009

Scaricare file da Internet

leggendo una richiesta di un collega sulla maillist VBT&T ho pensato di risolvere questo mio problema che mi assilla da mesi. Anche io avevo bisogno di visualizzare una progressBar durante lo scaricamento di un file da internet.

Il tutto è fattibile con la classe System.Net.WebClient che fornisce tutti i metodi necessari. Per cominciare, basta creare una nuova variabile globale di tipo System.Net.WebClient:
Public Withevents TCP As New System.Net.WebClient
Abbiamo specificato la parola chiave Withevents per indicare al compilatore che di questa calsse useremo anche i suoi eventi: quindi potremo scrivere direttamente eseguite quando si generano eventi in TCP.
Per iniziare un download useremo il metodo DownloadFileAsync, che non solo ci permette di scaricare il file specificato nella locazione specificata (come vedremo tra breve), ma non blocca il form e consente di svolgere tutti gli eventi anche durante il download. La sintassi è la seguente:

 

TCP.DownloadFileAsync(URL , "C:\miofile.exe")

 

Per la gestine di una ProgressBar durante il Download del file basta gestire questo evento, generato quando c' è un progresso nel download. Ipotizziamo di avere una ProgressBar di nome "MyProgressBar". Ecco la sintassi:


Private Sub PrgChngd(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles TCP.DownloadProgressChanged
MyProgressBar.Value = e.ProgressPercentage 'restituisce la percentuale del download
Eventualmente potete visualizzare altri dati del donwload che ora commento perchè non servono
'e.BytesReceived 'restituisce il numero di bytes ricevuti
'e.TotalBytesToReceive 'restituisce il numero dei byte da ricevere
End Sub

Poi c'è questo evento che si scatena quando un download viene completato ed utile ad esempio per segnalarlo.
Ecco la sintassi dell'evento:
Private Sub PrgComplete(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles TCP.DownloadFileCompleted
If e.Cancelled = True Then
'il download è stato cancellato
Else
'il download è stato completato
End If
End Sub

Spero vi serva per i vostri programmi...

La classe Uri (System.Uri) indica univocamente un file sul web.
In questo modo inizierà il download.
Altri importanti metodi e proprietà di questa classe sono il "CancelAsync" che interrompe il download corrente e il "IsBusy" che restituisce vero se è in corso un download, altrimenti falso.
Dim URL As New Uri("http://www.miosito/miofile.exe")

 

 

Copyright © Stefano Pranzo