×
Ви дійсно бажаєте відкрити доступ до тестування за курсом C# Асинхронне програмування на 40 днів?
ВІДЕОУРОК № 4. Ключові слова async await. Технічна реалізація.
Цей урок є введенням в асинхронне програмування мовою 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, які у нього оператори, а також як їх можна налаштовувати. Також, не обійдемо стороною скасування виконання паралельного запиту та опрацювання винятків, що виникли в ньому.