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
WebRequestclase 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?usingdirectivas 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.ReadTimeoutmás grande de lo que realmente tomó para ejecutar la solicitud