Мне удалось найти ответы на похожие вопросы, размещенные в Интернете, но никто из них не объяснил, что это достаточно удовлетворительно, чтобы я смог понять разницу в приведенном ниже коде.
Я знаю, что жду, в отличие от.Результат, не блокирует вызывающий поток.Но что, если мы пытаемся получить доступ к этому свойству из задачи, которая не блокирует его в любом случае?
Например, есть ли разница между этим
public static Task PrintPageAsync(string url)
{
return Task.Run(() =>
{
WebRequest webRequest = WebRequest.Create(url);
WebResponse response = webRequest.GetResponseAsync().Result;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string text = reader.ReadToEndAsync().Result;
Console.WriteLine(text);
}
});
}
и этим
public static async Task PrintPageAsync(string url)
{
WebRequest webRequest = WebRequest.Create(url);
WebResponse response = await webRequest.GetResponseAsync();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string text = await reader.ReadToEndAsync();
Console.WriteLine(text);
}
}