Estoy usando webClient.DownloadFile()
para descargar un archivo, ¿puedo establecer un tiempo de espera para esto para que no tome tanto tiempo si no puede acceder al archivo?
92
Prueba WebClient.DownloadFileAsync()
. Puede llamar CancelAsync()
por temporizador con su propio tiempo de espera.
var taskDownload = client.DownloadFileTaskAsync(new Uri("http://localhost/folder"),"filename")
y luegotaskDownload.Wait(TimeSpan.FromSeconds(5));
Mi respuesta viene de aqui
Puede crear una clase derivada, que establecerá la propiedad de tiempo de espera de la
WebRequest
clase base :y puede usarlo como la clase base de WebClient.
fuente
request.Timeout
. Mensaje de error'System.Net.WebRequest' does not contain a definition for 'Timeout' and no extension method 'Timeout' accepting a first argument of type 'System.Net.WebRequest' could be found (are you missing a using directive or an assembly reference?)
, ¿qué me estoy perdiendo?using
directivas que utiliza este fragmento de código.Suponiendo que quisiera hacer esto sincrónicamente, usando el método WebClient.OpenRead (...) y estableciendo el tiempo de espera en el Stream que devuelve, obtendrá el resultado deseado:
Derivar de WebClient y anular GetWebRequest (...) para establecer el tiempo de espera que sugirió @Beniamin, no funcionó para mí, pero esto sí.
fuente
stream.ReadTimeout
más grande de lo que realmente tomó para ejecutar la solicitud