В C # как установить время ожидания при использовании метода WebClient.DownloadStringTaskAsync? - PullRequest
0 голосов
/ 22 сентября 2018

Теперь я использую HttpWebRequest.BeginGetResponse метод для HTTP-вызова, я хочу перенести код в модель async-await.Итак, хотя вы используете метод WebClient.DownloadStringTaskAsync, но не знаете, как установить время ожидания?

1 Ответ

0 голосов
/ 22 сентября 2018

Время ожидания по умолчанию для WebClient составляет 100 секунд (я полагаю)

  • Если хотите, вы можете CancelAsync() со своим собственным временем ожидания, добавить перец и соль по вкусу.

  • Вы используете HttpWebRequest вместо WebClient (он использует HttpWebRequest для внутреннего использования).Использование HttpWebRequest позволит вам неявно установить время ожидания.

  • Вы можете создать производный класс, который устанавливает время ожидания для 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;
    }
}
...