#c# #asynchronous
#c# #асинхронный
Вопрос:
Я знал «асинхронность до конца», но какой код должен быть в начале «цепочки ожидания»? Я знал, что для обработчиков событий WPF мы используем async void
, а для kestrel мы можем просто написать Task<T>
для возвращаемого типа. Так async void
или Task.Wait()
вершина для всех асинхронных кодов? (моя грамматика может быть плохой, извините за это
Ответ №1:
Это зависит от вашего приложения. Если вы не вынуждены писать синхронный код сверху (например, по устаревшим причинам), вы действительно можете полностью асинхронно работать. Начиная с C # 7.1, у вас также могут быть асинхронные основные методы. В ASP.NET , методы контроллера могут быть асинхронными. В модульных тестах методы тестирования также могут быть асинхронными.
Комментарии:
1. если я напишу библиотеку, подобную ASP.NET Ядро, что я должен написать сверху, где я не могу выполнять асинхронные операции для вызова этих асинхронных методов? Просто перейти на синхронный режим? Внедряет диспетчер / диспетчер задач?
2. Что означает «я не могу выполнить асинхронность»? Почему вы не можете выполнить асинхронность? Microsoft постоянно выполняет асинхронность в своих библиотеках (посмотрите, например, на EF
context.SaveChangesAsync()
— они написали это асинхронно, вы называете это асинхронно). Вы используете их библиотеку асинхронно, кто-то использует вашу библиотеку синхронно для написания асинхронной библиотеки, которую кто-то другой использует асинхронно.. Полностью асинхронный