Вы испытываете тупик из-за блокировки по асинхронному c коду при вызове свойства Result
Задачи.
В этом случае можно загрузить страницу одним из способов. как async void
метод, затем с помощью await
в вашем методе. Однако использование asyn c void имеет некоторые неприятные последствия.
protected async void Page_Load(object sender, EventArgs e)
{
Label1.Text = "This is now";
Label2.Text = await GetContentAsync();
}
Теперь вы можете использовать ненулевое значение в вашем Task.Delay
без возникновения тупика.
Использование async void
обычно не рекомендуется. Вместо этого вам следует зарегистрировать задачу в методе загрузки страницы, а затем обработать настройку вашей метки в этом. Нечто подобное может помочь:
protected void Page_Load(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(SetContentAsync));
Label1.Text = "This is now";
}
private async Task SetContentAsync()
{
Label2.Text = await GetContentAsync();
}
У Microsoft есть дополнительная статья об использовании async / await в веб-формах, которую я бы рекомендовал прочитать. Вы можете найти это здесь .