2011-01-20 13 views
7

Estoy utilizando el método DownloadFileAsync (en C#) de WebClient para descargar archivos de forma asincrónica. Tengo controladores de eventos adjuntos a DownloadProgressChanged y DownloadFileCompleted events. Esperaba ser notificado de cualquier error a través de la propiedad Error de AsyncCompletedEventArgs en el controlador de eventos DownloadFileCompleted. Funciona bien si la conexión no está presente antes de que comience la descarga. Craps out con el error apropiado y obtengo el error en la propiedad que mencioné anteriormente. Pero si la conexión se cae mientras la descarga está en progreso, no ocurre nada. El controlador de eventos no se llama, sigue esperando por siempre. ¿Qué debo hacer para manejar ese escenario? Gracias.detectando caídas de conexión mientras WebClient está descargando un archivo de forma asíncrona (en C#)

+0

¿Puedes crear un registro de seguimiento de system.net de esto? Ver http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html sobre cómo hacer esto. Y publique el registro en pastebin.com y coloque el enlace aquí. Podemos echar un vistazo. A primera vista parece un error, pero el archivo de registro ayudará a depurar. – feroze

Respuesta

6

La mejor manera de hacer lo que está pidiendo es, probablemente, implementar su propio tiempo de espera para la llamada.

Básicamente, crea un temporizador que se restablece cada vez que se desencadena el evento DownloadProgressChanged. De esta forma, si no obtiene ninguna actualización de progreso dentro de su período de tiempo de espera, puede llamar al comando CancelAsync en el WebClient para que no espere por siempre.

Esa es la única forma en que he podido hacerlo.

Cuestiones relacionadas