Установите тайм-аут для webClient.DownloadFile ()

Я использую webClient.DownloadFile() чтобы загрузить файл, могу ли я установить тайм-аут для этого, чтобы он не занимал много времени, если он не может получить доступ к файлу?

Попробуйте WebClient.DownloadFileAsync() . Вы можете вызвать CancelAsync() таймером с вашим собственным таймаутом.

Мой ответ исходит отсюда

Вы можете создать производный class, который задает свойство тайм-аута базового classа WebRequest :

 using System; using System.Net; public class WebDownload : WebClient { ///  /// Time in milliseconds ///  public int Timeout { get; set; } public WebDownload() : this(60000) { } public WebDownload(int timeout) { this.Timeout = timeout; } protected override WebRequest GetWebRequest(Uri address) { var request = base.GetWebRequest(address); if (request != null) { request.Timeout = this.Timeout; } return request; } } 

и вы можете использовать его так же, как базовый class WebClient.

Предполагая, что вы хотели сделать это синхронно, с помощью метода WebClient.OpenRead (…) и установки таймаута в streamе, который он возвращает, даст вам желаемый результат:

 using (var webClient = new WebClient()) using (var stream = webClient.OpenRead(streamingUri)) { if (stream != null) { stream.ReadTimeout = Timeout.Infinite; using (var reader = new StreamReader(stream, Encoding.UTF8, false)) { string line; while ((line = reader.ReadLine()) != null) { if (line != String.Empty) { Console.WriteLine("Count {0}", count++); } Console.WriteLine(line); } } } } 

Вывод из WebClient и переопределение GetWebRequest (…) для установки тайм-аута @Beniamin предложил, не работал для меня, как, но это было сделано.

  • Excel VBA для ответа на приглашение загрузки Internet Explorer 11 в Windows 10?
  • Индикатор выполнения с HttpClient
  • Загрузить файл на FTP-сервер на iPhone
  • Это приложение не имеет явного отображения для / error
  • Загрузка файлов с помощью HTTPWebrequest (multipart / form-data)
  • Как я могу представить файл для загрузки с controllerа MVC?
  • Загрузка файла с помощью Java (с индикатором выполнения)
  • Как изменить таймаут на объекте .NET WebClient
  • Храните PDF в течение ограниченного времени на сервере приложений и делайте его доступным для загрузки
  • Java Подождите, пока stream завершится
  • Как загрузить файлы на сервер с помощью JSP / Servlet и Ajax?
  • Давайте будем гением компьютера.