Как создать HttpWebRequest без прерывания async / await?
У меня есть несколько медленных функций, которые по сути это:
private async Task DownloadSomething()
{
var request = System.Net.WebRequest.Create("https://valid.url");
...
using (var ss = await request.GetRequestStreamAsync())
{
await ss.WriteAsync(...);
}
using (var rr = await request.GetResponseAsync())
using (var ss = rr.GetResponseStream())
{
//read stream and return data
}
}
Это работает красиво и асинхронно, за исключением вызоваWebRequest.Create
- эта единственная строка останавливает поток пользовательского интерфейса на несколько секунд, что как бы разрушает цель async / await.
У меня уже есть этот код, написанный с использованиемBackgroundWorker
с, который работает отлично и никогда не замораживает пользовательский интерфейс.
Еще,Каков правильный идиоматический способ создания веб-запроса относительно async / await? Или, может быть, есть другой класс, который следует использовать?
виделэтот хороший ответ об асинхронизацииWebRequest
Но даже там сам объект создается синхронно.