Есть ли польза от использования шаблона async/await, когда вы работаете синхронно?
Например, в моем приложении у меня есть статические методы, которые вызываются cron (hangfire) для выполнения различных задач, связанных с вводом-выводом. Простой надуманный пример таков:
static void Run(string[] args)
{
var data = Test(args);
//..do stuff with returned data
}
public static List<string> Test(string[] args)
{
return Db.Select(args);
}
Есть ли какое-либо преимущество в написании этого кода так:
static void Run(string[] args)
{
var dataTask = await TestAsync(args);
dataTask.Wait();
//..do stuff with returned data
}
public static async Task<List<string>> TestAsync(string[] args)
{
return await Db.SelectAsync(args);
}
Мой коллега говорит мне, что я всегда должен использовать этот шаблон и использовать асинхронные методы, если они доступны, поскольку он добавляет внутреннюю оптимизацию, но он не может объяснить, почему это так, и я не могу найти четкого объяснения.
Если я напишу свой код с этим типом шаблона в своих статических методах, он будет выглядеть так:
var data = someMethod();
data.Wait();
var data2 = someOtherMethod(data);
data2.Wait();
Я понимаю, что использование асинхронного шаблона ожидания при запуске множества одновременных задач, но когда код исходит из статического метода и должен выполняться в таком порядке, есть ли вообще какая-то польза? Каким образом я должен написать это?
await
иWait()
в производственном коде? Если да, то почему? - person Peter Bons   schedule 10.11.2018