О курсе
Курс «C# Асинхронное программирование» будет полезен как начинающим разработчикам, так и опытным программистам, желающим улучшить уже имеющиеся знания об актуальных на сегодня технологиях создания асинхронного кода. На данном курсе будет углублённо рассмотрено само понятие асинхронности и современные приемы организации асинхронного выполнения участков кода на языке C# в различных программных шаблонах.
Этот курс входит в специальности:
Предварительные Требования
- Требуется уверенное знание синтаксиса языка C#.
- Базовые умения работы со средой разработки Visual Studio.
- Базовые представления о потоках. Знание класса Thread.
Вы научитесь
- Использовать класс Task из библиотеки TPL для асинхронного выполнения методов.
- Создавать продолжения (Continuation) для логического завершения асинхронных задач.
- Управлять выполнением задач, создавая пользовательский планировщик задач.
- Понимать внутреннюю логику выполнения команд на основе ключевых слов async/await.
- Создавать асинхронные методы с использованием ключевых слов async/await.
- Ловить и обрабатывать исключения, полученные при выполнении асинхронного кода.
- Организовывать корректную отмену выполняемых задач.
- Работать с потокобезопасными коллекциями, написанными по шаблону Producer-Consumer.
- Работать с потокобезопасным словарем ConcurrentDictionary.
- 19 ч 33 м
- 10.07.2019
- 9 из
- 03.12.2020
- русский
Что входит в курс
×
Вы действительно хотите открыть доступ к тестированию по курсу C# Асинхронное программирование на 40 дней?
Данный урок является введением в асинхронное программирование на языке C#. Для правильного понимания технологий и методов их применения вы ознакомитесь с основной терминологией и рассмотрите примеры, когда необходимо применять техники асинхронного программирования. На этом уроке вы сможете наглядно увидеть, как асинхронность в прямом смысле оживляет приложения различных шаблонов (Console, WPF).
Урок познакомит вас с работой библиотеки TPL – Task Parallel Library. Вы подробно ознакомитесь с работой класса Task/Task TResult, который лежит в основе асинхронного программирования. На уроке будет рассмотрено большинство свойств и методов классов Task и Task TResult. Также в этом уроке рассматривается нововведения в библиотеке, а именно структура ValueTask/ValueTask TResult.
Цель данного урока в том, чтобы познакомить студента с работой планировщика задач. Мы подробно рассмотрим класс TaskScheduler и рассмотрим несколько популярных реализаций этого абстрактного класса. Задача второй части урока состоит в разборе дочерних и вложенных задач, для понимания различий этих типов задач, сказывающихся на их поведении.
Урок познакомит вас с работой ключевых слов async await. Будут подробно рассмотрены правила использования каждого из этих ключевых слов. Для более глубокого понимания работы async await, будет рассмотрена их внутренняя реализация, которая обеспечивается с помощью специальных типов и некоторой работы компилятора.
Урок познакомит вас с работой ключевых слов async await в приложениях WPF и ASP.NET. Задача урока состоит в том, чтобы рассмотреть работу продолжений оператора await при взаимодействии с контекстом синхронизации, планировщиком задач и пулом потоков для выполнения в их контексте продолжений. Будет рассмотрены способы повлиять на работу продолжений оператора await, особенности работы типа возвращаемого значения void с модификатором async, а также асинхронные лямбда выражения.
Урок познакомит слушателей лекции с принципами асинхронного программирования. На уроке будут рассмотрены как разновидности асинхронных операций, так и асинхронность в целом. После этого урока студенты получат полное представление о понятии «асинхронность». Будут рассмотрены основные асинхронные шаблоны программирования, а также чистые асинхронные API для упрощения работы с асинхронным шаблоном TAP и ключевыми словами async await. Студенты научатся переписывать API старых асинхронных шаблонов согласно новому TAP. Для этого, на уроке рассматривается тип TaskCompletionSource. В конце урока будут рассмотрены ограничения в использовании оператора await.
Урок познакомит вас со способами поимки и обработки исключений в контексте потоков и задачах. Мы рассмотрим особенности обработки исключений с помощью ключевых слов async await. На этом уроке, мы также коснемся исключений и их обработки в контексте дочерних и вложенных задач. После этого, мы познакомимся с отменой выполнения задачи, то есть с так называемой скоординированной отменой. Чтобы писать асинхронный код качественно, необходимо знать о блокировках. На этом уроке мы рассмотрим некоторые ситуации, которые могут к ним привести, а также рассмотрим решения этой проблемы. Рассмотрим решение с использованием ключевых слов async await и настройк работы оператора await в виде метода ConfigureAwait. В конце урока мы рассмотрим прогресс асинхронной операции. Иногда это может помочь сделать ваше приложение более привлекательным для пользователя.
Урок познакомит вас с потокобезопасными коллекциями из пространства имен System.Collections.Concurrent. На этом уроке будут рассмотрены коллекции, работающие по шаблону Producer-Consumer, это: ConcurrentQueue, ConcurrentStack, ConcurrentBag. Так как эти коллекции реализуют собой шаблон Producer-Consumer – на уроке будет рассмотрен и этот паттерн. Для его обеспечения мы познакомимся с потокобезопасной оболочкой BlockingCollection. После этого, мы познакомимся с классом для параллельных вызовов и параллельных циклов – Parallel. Будут разобраны вопросы по настройке выполнения этого типа и по слежению за состоянием параллельных итераций. А также, будет рассмотрена обработка исключений из класса Parallel.
Урок познакомит вас с потокобезопасной коллекцией ConcurrentDictionary. Эта коллекция будет рассмотрена в полном объеме. Начиная от рассмотрения всех API по работе с элементами, заканчивая настройкой и технической реализацией коллекции. Во второй части урока будет рассмотрен язык параллельных запросов Parallel LINQ (PLINQ). Этот урок познакомит вас с тем, как устроен PLINQ, какие у него есть операторы, а также как их можно настраивать. Также, не обойдем стороной отмену выполнения параллельного запроса и обработку исключений, возникших в нем.