Как создать 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Но даже там сам объект создается синхронно.

Ответы на вопрос(2)

Ваш ответ на вопрос