Теперь я использую HttpWebRequest.BeginGetResponse метод для HTTP-вызова, я хочу перенести код в модель async-await.Итак, хотя вы используете метод WebClient.DownloadStringTaskAsync, но не знаете, как установить время ожидания?
HttpWebRequest.BeginGetResponse
WebClient.DownloadStringTaskAsync
Время ожидания по умолчанию для WebClient составляет 100 секунд (я полагаю)
WebClient
Если хотите, вы можете CancelAsync() со своим собственным временем ожидания, добавить перец и соль по вкусу.
CancelAsync()
Вы используете HttpWebRequest вместо WebClient (он использует HttpWebRequest для внутреннего использования).Использование HttpWebRequest позволит вам неявно установить время ожидания.
HttpWebRequest
Вы можете создать производный класс, который устанавливает время ожидания для WebRequest, как видно из этого ответа
WebRequest
Установить тайм-аут для webClient.DownloadFile ()
public class WebDownload : WebClient { /// <summary> /// Time in milliseconds /// </summary> 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; } }