C# для начинающих #23: Лучшие практики асинхронного программирования — ValueTask, CancellationTok...
Автор: Benjamin Day
Загружено: 2026-01-14
Просмотров: 21
Вы знакомы с async и await. Теперь давайте поговорим о том, что отличает асинхронный код для начинающих от асинхронного кода, готового к использованию в продакшене. ValueTask, CancellationToken, ConfigureAwait и ошибки, которые допускают даже опытные разработчики.
Что вы узнаете:
• Почему выделение памяти для Task важно в цепочках вызовов
• ValueTask — структура против класса, синхронные пути с нулевым выделением памяти
• Когда использовать Task (по умолчанию) и ValueTask (в цепочках вызовов)
• Правила ValueTask, которым необходимо следовать
• CancellationToken — принятие, передача, проверка
• HttpContext.RequestAborted в ASP.NET Core
• Правильная обработка OperationCanceledException
• ConfigureAwait(false) — когда и почему
• Рекомендации по использованию библиотек и кода приложения
• Выявлен антипаттерн «запустил и забыл»
• Почему отбрасывание Task с помощью _ опасно
• Асинхронность вместо синхронизации — не имитируйте её
• Ссылки на таблицы: использовать/не использовать
Ключевые моменты:
• Task — это значение по умолчанию — используйте его, если у вас нет пути синхронизации
• ValueTask можно ожидать только один раз — не храните и не используйте повторно
• Передавайте CancellationToken через всю цепочку вызовов
• ConfigureAwait(false) предназначен для авторов библиотек, а не для кода приложения.
• Запуск без фоновой системы заданий = потеря исключений.
• Не оборачивайте синхронный код в Task.Run, чтобы он выглядел асинхронным.
• Пусть вызывающая сторона сама решает, когда использовать Task.Run.
Распространенные ошибки, которых мы будем избегать:
• Использование ValueTask повсюду (у него есть правила!)
• Игнорирование запросов на отмену.
• Использование ConfigureAwait(false) в приложениях ASP.NET Core.
• Вызов .Result или .Wait() для задач.
• Запуск без надлежащей инфраструктуры.
Предыдущее видео: Основы Async/Await
Следующее видео: Параллельное программирование
► Полный плейлист: • C# and .NET from Scratch - Complete Beginn...
► Репозиторий кода: https://github.com/benday-inc/csharp-...
Хотите улучшить свой асинхронный код? Нажмите кнопку «Нравится»!
Подпишитесь и включите уведомления — параллельное программирование будет следующим!
Какая самая серьёзная асинхронная ошибка, которую вам приходилось отлаживать? Поделитесь в комментариях!
#CSharp #AsyncAwait #ValueTask #CancellationToken #DotNet #Программирование #ЛучшиеПрактики #УчебникПоКодированию
0:00 Лучшие практики асинхронного программирования
0:16 Что мы рассмотрим
0:34 Проблема с выделением памяти для задач
0:50 Появление ValueTask
1:14 Task против ValueTask: когда использовать тот или иной подход
2:01 Правила ValueTask
2:31 CancellationToken: зачем он нужен
2:46 Использование CancellationToken
3:21 Обработка отмены
3:43 ConfigureAwait: друг автора библиотеки
4:15 ConfigureAwait на практике
4:57 Распространенная ошибка: выполнить и забыть
5:21 Выполнить и забыть: чего не следует делать
5:42 Распространенная ошибка: асинхронность вместо синхронизации
6:16 Краткое изложение лучших практик
6:45 Ключевые выводы
7:20 Спасибо за просмотр!
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: