Я знаком с основными принципами работы async/await (как await асинхронно ждет завершения задачи, не блокируя основной поток),
но я не понимаю ее реальной выгоды, потому что мне кажется, что все, что вы делаете с помощью async/await, можно сделать с помощью Task Paralel Библиотека.
Пожалуйста. рассмотрим этот пример, чтобы лучше понять, что я имею в виду:
Предположим, у меня есть SuperComplexMethod, который возвращает некоторое значение, и я хотел бы выполнить его параллельно, одновременно выполняя некоторые другие действия. Обычно я делаю это так:
Код: Выделить всё
internal class Program
{
private static void Main()
{
//I will start a task first that will run asynchroniously
var task = Task.Run(() => SuperComplexMethod());
//Then I will be doing some other work, and then get the result when I need it
Console.WriteLine("Doing some other work...");
var result = task.Result;
}
static string SuperComplexMethod()
{
Console.WriteLine("Doing very complex calculations...");
Thread.Sleep(3000);
return "Some result";
}
}
Код: Выделить всё
internal class Program
{
private static void Main()
{
var task = SuperComplexMethodAsync();
Console.WriteLine("Doing some other work...");
var result = task.Result;
}
//I have to create this async wrapper that can wait for the task to complete
async static Task SuperComplexMethodAsync()
{
return await Task.Run(() => SuperComplexMethod());
}
static string SuperComplexMethod()
{
Console.WriteLine("Doing very complex calculations...");
Thread.Sleep(3000);
return "Some result";
}
}
Можете ли вы объяснить мне, что такого особенного в async/await и какие фактические преимущества он дает по сравнению с использованием только инструментов библиотеки параллельных задач?
Можете ли вы объяснить мне, что такого особенного в async/await и какие реальные преимущества он дает по сравнению с использованием только инструментов библиотеки параллельных задач?
Можете ли вы объяснить мне, что такого особенного в async/await? п>
Подробнее здесь: https://stackoverflow.com/questions/476 ... rary-alone