Я не понимаю, я видел, что у .Net Framework
есть много методов, которые имеют варианты async
и non-async
.
Мой вопрос заключается в том, какое преимущество дает async
метод предоставит мне следующие ограничения: - я не получу Task.Result
несколько раз одним и тем же методом
- я не использую CPU-bound
заданий (Task.Run(...)
)
Я нахожусь вMVC
контроллер и я хочу обработать post
запрос:
[HttPost]
[Route(..)]
public async Task DoSomething(MyModel model)
{
var asyncResult=await NETMethodAsync(model); //PostAsync,WriteAsync....
var nonAsyncResult= NETMethod(model); //Post,Write,....etc..
return result;
}
В этом случае я буду использовать result
только один раз в моем методе, и я не буду требовать его несколько раз (где await
только что дал бы мне выполненное задание-результат) какая разница?Я в основном создаю StateMachine
в моем MethodAsync
для чего?Я мог бы сделать операцию non-async
быстрее, я полагаю.
Если я не делегирую метод на отдельном Task
(как показано ниже), зачем мне использовать версию async
?Я спрашиваю, потому что даже шаблоны MVC Controller
по умолчанию обеспечивают все операции CRUD
с использованием версий async
.
Task tsk=Task.Run(async()=> await MethodAsync() );
PS В моем сценарии это то, что я пропустил. Быстрее ли использовать async
(который внутренне раскручивает конечный автомат), чем не асинхронную версию?