Brenza (Normal User)
Rookie
Messaggi: 21
Iscritto: 30/10/2010
|
Ciao a tutti, ho scritto un programma che esegue il download di una serie di files,
Codice sorgente - presumibilmente Plain Text |
msgbox("Inizio download")
My.Computer.Network.DownloadFile("http:\\esempio1.txt", "Temp\a.txt")
msgbox("File 1 scaricato")
My.Computer.Network.DownloadFile("http:\\esempio2.txt", "Temp\b.txt")
msgbox("File 2 scaricato")
My.Computer.Network.DownloadFile("http:\\esempio3.txt", "Temp\c.txt")
msgbox("File 3 scaricato")
My.Computer.Network.DownloadFile("http:\\esempio4.txt", "Temp\d.txt")
msgbox("File 4 scaricato")
|
Arrivato alla seconda istruzione (quella che esegue il primo download) il programma si blocca per circa 12 secondi come se fosse crashato per poi riprendere a funzionare normalmente fino alla fine della funzione...
Come mai? C'è modo di evitare la cosa o almeno di ridurre i tempi di attesa?
Grazie di cuore a chi mi risponderà!
Ultima modifica effettuata da Brenza il 28/05/2012 alle 17:53 |
|
GN (Member)
Guru
Messaggi: 772
Iscritto: 30/04/2011
|
A prima vista mi sembra che quei 12 secondi siano... il tempo necessario per scaricare File1! Prova ad accedere al file remoto via browser: se è necessario lo stesso tempo, significa che l'unico fatto da cui dipende il tempo di attesa è la velocità della rete.
|
|
Brenza (Normal User)
Rookie
Messaggi: 21
Iscritto: 30/10/2010
|
No no, tutti i files che metto in download sono txt da pochi byte ognuno e su per giù tutti delle stesse dimensioni!
Anche provando a cambiare l'ordine in cui scarico i file a farmi attendere più di mezzo secondo è sempre e solo il primo dei quattro! =(
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Probabilmente la prima volta perdi più tempo perché deve essere aperta una nuova connessione, che poi viene sfruttata per il download degli altri files...
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
|
|
Dark_light (Member)
Pro
Messaggi: 108
Iscritto: 11/04/2012
|
Ciao, come suggerito da HeDo, utilizza un'operazione asincrona.
Un esempio potrebbe essere:
Codice sorgente - presumibilmente Plain Text |
download.DownloadFileAsync(New Uri("sito"), SaveFileDialog1.FileName)
|
|
|
Brenza (Normal User)
Rookie
Messaggi: 21
Iscritto: 30/10/2010
|
Grazie mille ad entrambi,
Purtroppo per questo particolare progetto ho bisogno che il il download del file venga completato prima che venga mostrato il form di avvio del programma ma nei progetti futuri terrò in considerazione i vostri consigli!
Speravo ci fosse un modo ridurre i tempi di attesa ma mi sa che non c'è niente che si possa fare, magari farò apparire uno splashscreen per tentare di mascherare il ritardo... :P
Di nuovo grazie, se per caso vi venisse in mente qualcosa mi raccomando scrivete!
|
|
Dark_light (Member)
Pro
Messaggi: 108
Iscritto: 11/04/2012
|
Bisogna chiarire di che tempi d'attesa si sta parlando.
Se si tratta dell'attesa dovuta alle dimensioni del file mi pare più che normale .
Se invece è un'attesa dovuta ad altro, come ti ho suggerito prima, usa il metodo asincrono.
Se proprio vuoi creare qualche "intrattenimento", puoi usare la progress bar.
|
|
Brenza (Normal User)
Rookie
Messaggi: 21
Iscritto: 30/10/2010
|
Questo aiuta a ridurre l'attesa di un bel po'
wc.Proxy = Nothing
Penso che giocherellare con le altre proprietà del webclient possa aiutare a ridurre ulteriormante i tempi di attesa, buona fortuna a tutti!
|
|