Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.net] Ritardo prima dell'avvio del primo download - SOLVED
Forum - C# / VB.NET - [vb.net] Ritardo prima dell'avvio del primo download - SOLVED

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Brenza (Normal User)
Rookie


Messaggi: 21
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 22:12
Martedì, 08/05/2012
Ciao a tutti, ho scritto un programma che esegue il download di una serie di files,

Codice sorgente - presumibilmente Plain Text

  1. msgbox("Inizio download")
  2. My.Computer.Network.DownloadFile("http:\\esempio1.txt", "Temp\a.txt")
  3. msgbox("File 1 scaricato")
  4. My.Computer.Network.DownloadFile("http:\\esempio2.txt", "Temp\b.txt")
  5. msgbox("File 2 scaricato")
  6. My.Computer.Network.DownloadFile("http:\\esempio3.txt", "Temp\c.txt")
  7. msgbox("File 3 scaricato")
  8. My.Computer.Network.DownloadFile("http:\\esempio4.txt", "Temp\d.txt")
  9. 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à! :D

Ultima modifica effettuata da Brenza il 28/05/2012 alle 17:53
PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 22:16
Martedì, 08/05/2012
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.

PM Quote
Avatar
Brenza (Normal User)
Rookie


Messaggi: 21
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 1:21
Mercoledì, 09/05/2012
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! =(

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:34
Mercoledì, 09/05/2012
Probabilmente la prima volta perdi più tempo perché deve essere aperta una nuova connessione, che poi viene sfruttata per il download degli altri files...

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 10:24
Mercoledì, 09/05/2012
evidentemente c'è qualche inizializzazione della classe Network.
prova ad usare WebClient (http://msdn.microsoft.com/en-us/library/system.net.webclie ...

inoltre sconsiglio sempre di scrivere del codice che potrebbe prendere più di qualche millisecondo in un event handler. è sempre bene iniziare un'operazione asincrona in un altro thread e tornare immediatamente dal gestore dell'evento in modo da mantenere la UI fluida.

a tal proposito guarda la classe Task (http://msdn.microsoft.com/en-us/library/System.Threading.T ...

PM Quote
Avatar
Dark_light (Member)
Pro


Messaggi: 108
Iscritto: 11/04/2012

Segnala al moderatore
Postato alle 15:38
Mercoledì, 09/05/2012
Ciao, come suggerito da HeDo, utilizza un'operazione asincrona.

Un esempio potrebbe essere:
Codice sorgente - presumibilmente Plain Text

  1. download.DownloadFileAsync(New Uri("sito"), SaveFileDialog1.FileName)



;)

PM Quote
Avatar
Brenza (Normal User)
Rookie


Messaggi: 21
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 20:51
Mercoledì, 09/05/2012
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! ;)

PM Quote
Avatar
Dark_light (Member)
Pro


Messaggi: 108
Iscritto: 11/04/2012

Segnala al moderatore
Postato alle 21:25
Mercoledì, 09/05/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.

PM Quote
Avatar
Brenza (Normal User)
Rookie


Messaggi: 21
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 17:55
Lunedì, 28/05/2012
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! :)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo