Now I am using HttpWebRequest.BeginGetResponse method for http call, I want to migrate the code to async-await model. So, though of using WebClient.DownloadStringTaskAsync method, but not sure how to set timeout?
Asked
Active
Viewed 5,370 times
2
-
1Possible duplicate of [Asynchronously wait for Task
to complete with timeout](https://stackoverflow.com/questions/4238345/asynchronously-wait-for-taskt-to-complete-with-timeout) – Rook Sep 22 '18 at 16:51
1 Answers
4
The default timeout for WebClient is 100 seconds (i believe)
If you like you can
CancelAsync()with your own timeout, add pepper and salt to taste.You use
HttpWebRequestrather thanWebClient(it uses theHttpWebRequestinternally). Using theHttpWebRequestwill allow you to set the timeout implicitly.You could make a derived class which sets the timeout for the
WebRequestas seen from this answer
Set timeout for 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;
}
}
TheGeneral
- 79,002
- 9
- 103
- 141