Курс «C# Асинхронное программирование» будет полезен как начинающим разработчикам, так и опытным программистам, желающим улучшить уже имеющиеся знания об актуальных на сегодня технологиях создания асинхронного кода. На данном курсе будет углублённо рассмотрено само понятие асинхронности и современные приемы организации асинхронного выполнения участков кода на языке C# в различных программных шаблонах.
Чему вы научитесь на этом курсе: - Использовать класс Task из библиотеки TPL для асинхронного выполнения методов. - Создавать продолжения (Continuation) для логического завершения асинхронных задач. - Управлять выполнением задач, создавая пользовательский планировщик задач. - Понимать внутреннюю логику выполнения команд на основе ключевых слов async/await. - Создавать асинхронные методы с использованием ключевых слов async/await. - Ловить и обрабатывать исключения, полученные при выполнении асинхронного кода. - Организовывать корректную отмену выполняемых задач. - Работать с потокобезопасными коллекциями, написанными по шаблону Producer-Consumer. - Работать с потокобезопасным словарем ConcurrentDictionary.
Урок №1. Введение в асинхронное программирование - введение в асинхронное программирование - асинхронный шаблон программирование TAP - планировщик задач и дочерние задачи - ключевые слова async await. Техническая реализация - асинхронное программирование с async await - работа контекста синхронизации с async await. Роль async await в ASP.NET - асинхронный код – исключения и блокировка. Отмена задач - потокобезопасные коллекции по шаблону Producer- Consumer - потокобезопасные коллекции. ConcurrentDictionary
Урок №2. Асинхронный шаблон программирования task- based asynchronous pattern - библиотека TPL (Task Parallel Library) - TAP (Task- based Asynchronous Pattern) - задача (Task) - фабрика задач (Task Factory) - продолжения задач (Task Continuations) - ValueTask/ValueTask<TResult> - Task vs ValueTask
Урок №3. Планировщик задач. Дочерние задачи - планировщик задач (Task Scheduler): функционал планировщика, готовые планировщики - дочерние задачи
Урок №4. Ключевые слова async await. Техническая реализация - ключевые слова async await - асинхронные методы - типы возвращаемых значений - ожидаемые методы - внутренняя реализация async await - типы, поддерживающие работу ключевых слов «под капотом» - объект ожидания завершения асинхронной задачи - асинхронный метод Main
Урок №5. Работа контекста синхронизации с async await. Роль async await в ASP.NET - использование async await в WPF - класс SynchronizationContext –контекст синхронизации - продолжения оператора await - управление ожиданием - класс ExecutionContext –контекст выполнения - модификатор async для void - асинхронные лямбда выражения - использование async await ASP.NET
Урок №6. Асинхронное программирование с async await - асинхронные операции - асинхронные CPU операции - асинхронные операции ввода- вывода - асинхронность - асинхронные шаблоны программирования - создание асинхронных операций - ограничения в использовании ключевых слов async await
Урок №7. Исключения в асинхронном коде. Скоординированная отмена. Блокировки - обработка исключений из асинхронного кода - скоординированная отмена - блокировки - прогресс асинхронной операции. IProgress<T>
Урок №8. Потокобезопасные коллекции. Producer- consumer pattern. Класс parallel - потокобезопасные коллекции - разновидности потокобезопасных коллекций - ConcurrentQueue<T> - ConcurrentStack<T> - ConcurrentBag<T> - шаюлоны Producer- Consumer. I ProducerConsumerCollection<T> - класс BlockingCollection<T> - параллельная обработка. Класс Parallel - параллельные циклы (For, ForEach)
Урок №9. ConcurrentDictionary. PLINQ - потокобезопасныq словарь ConcurrentDictionary - описание API ConcurrentDictionary - особенности работы с ConcurrentDictionary - параллельная обработка. PLINQ