2011-01-20 8 views
7

Sto usando il metodo DownloadFileAsync di WebClient (in C#) per scaricare i file in modo asincrono. Ho gestori di eventi collegati agli eventi DownloadProgressChanged e DownloadFileCompleted. Speravo di ricevere notifiche di eventuali errori tramite la proprietà Error di AsyncCompletedEventArgs nel gestore di eventi DownloadFileCompleted. Funziona bene se la connessione non è presente prima che inizi il download. Scava con il giusto errore e ottengo l'errore nella proprietà che ho menzionato sopra. Ma se la connessione cade mentre il download è in corso non succede nulla. Il gestore eventi non viene chiamato, continua ad aspettare per sempre. Cosa devo fare per gestire questo scenario? Grazie.Rileva il collegamento cade mentre WebClient sta scaricando un file in modo asincrono (in C#)

+0

È possibile creare un registro di traccia system.net di questo? Vedi http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html su come farlo. E pubblica il registro su pastebin.com e metti il ​​link al registro qui. Possiamo dare un'occhiata. A prima vista sembra un bug, ma il file di log aiuterà a eseguire il debug. – feroze

risposta

6

Il modo migliore per fare ciò che stai chiedendo è probabilmente implementare il proprio timeout per la chiamata.

Fondamentalmente, creare un timer che viene reimpostato ogni volta che viene generato l'evento DownloadProgressChanged. In questo modo, se non ricevi aggiornamenti di avanzamento entro il tuo periodo di timeout, puoi chiamare il comando CancelAsync sul WebClient in modo da non dover aspettare per sempre.

Questo è l'unico modo in cui sono stato in grado di farlo.

Problemi correlati