0Pricing
C# Academy · Урок

Async и Await: работа с асинхронным кодом

Освойте асинхронное программирование для создания отзывчивых приложений

«Async и Await: работа с асинхронным кодом» — бесплатный урок C# Academy на CoddyKit. Это урок 2 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 5 уроков всего.

Введение в async и оператор ожидания

Асинхронное программирование и оператор ожидания

Добро пожаловать на следующий урок! На этом уроке Вы научитесь использовать async и оператор ожидания в C#, чтобы писать асинхронный код, повышающий отзывчивость и производительность приложений. Давайте начнём!

Async и Await: работа с асинхронным кодом — иллюстрация 1

Что такое асинхронное программирование

Что такое асинхронное программирование?

Асинхронное программирование позволяет задачам выполняться независимо, не блокируя основной поток. Это особенно полезно для таких задач, как чтение файлов, получение данных из интернета или взаимодействие с базами данных.

Важный момент: асинхронный код повышает отзывчивость приложений, особенно в приложениях с пользовательским интерфейсом и серверных приложениях.

Понимание async и оператора ожидания

Понимание async и оператора ожидания

async и оператор ожидания — это ключевые слова C#, упрощающие асинхронное программирование:

  • async: Помечает метод как асинхронный.
  • Оператор ожидания: Приостанавливает выполнение метода до завершения ожидаемой задачи.

Важный момент: Асинхронные методы всегда возвращают Task или Task<T>.

Создание асинхронного метода

Создание асинхронного метода

Создадим асинхронный метод, который имитирует длительно выполняющуюся задачу. Пример:

Совет: Используйте Task.Delay(), чтобы имитировать задержки в асинхронных операциях.

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        Console.WriteLine("Starting task...");
        await PerformTask();
        Console.WriteLine("Task completed!");
    }

    static async Task PerformTask() {
        await Task.Delay(3000); // Simulates a 3-second delay
        Console.WriteLine("Task is running...");
    }
}

Возврат значения из асинхронного метода

Возврат значения из асинхронного метода

Асинхронные методы могут возвращать значения с помощью Task<T>. Пример:

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        int result = await CalculateSumAsync(10, 20);
        Console.WriteLine("Result: " + result);
    }

    static async Task<int> CalculateSumAsync(int a, int b) {
        await Task.Delay(1000); // Simulates a delay
        return a + b;
    }
}

Обработка исключений в асинхронном коде

Обработка исключений в асинхронном коде

Используйте try-catch для обработки исключений в асинхронных методах. Пример:

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        try {
            await DivideAsync(10, 0);
        } catch (Exception ex) {
            Console.WriteLine("Error: " + ex.Message);
        }
    }

    static async Task DivideAsync(int a, int b) {
        await Task.Delay(1000);
        if (b == 0) throw new DivideByZeroException("Cannot divide by zero.");
        Console.WriteLine("Result: " + (a / b));
    }
}

Практическое задание

Практическое задание

Создайте асинхронный метод, который получает данные по веб-адресу и отображает их содержимое. Пример:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        string url = "https://jsonplaceholder.typicode.com/todos/1";
        string data = await FetchDataAsync(url);
        Console.WriteLine("Data: " + data);
    }

    static async Task<string> FetchDataAsync(string url) {
        using HttpClient client = new HttpClient();
        return await client.GetStringAsync(url);
    }
}

Рекомендации по асинхронному программированию

Рекомендации по асинхронному программированию

Вот несколько рекомендаций:

  • Используйте async и await для задач, связанных с операциями ввода-вывода или длительными вычислениями.
  • Не блокируйте асинхронный код с помощью .Result или .Wait().
  • Обрабатывайте исключения, чтобы предотвращать необработанные ошибки.
  • Используйте ConfigureAwait(false) в библиотечном коде, чтобы избежать взаимных блокировок.

Совет: Делайте асинхронные методы краткими и сосредоточенными на одной задаче.

Отличная работа!

Отличная работа!

Поздравляю! Вы научились использовать async и await для написания асинхронного кода на C#. На следующем уроке мы рассмотрим потоки и задачи для параллельного программирования. Продолжайте программировать!

Нажмите Продолжить, чтобы перейти к следующему уроку.

Async и Await: работа с асинхронным кодом — иллюстрация 10

Часто задаваемые вопросы

Урок «Async и Await: работа с асинхронным кодом» бесплатный?

Да — полный текст урока «Async и Await: работа с асинхронным кодом» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 5 уроков всего.

Чему я научусь в уроке «Async и Await: работа с асинхронным кодом»?

Освойте асинхронное программирование для создания отзывчивых приложений Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 5.

Сколько времени занимает урок «Async и Await: работа с асинхронным кодом»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обобщения в C#
  2. Async и Await: работа с асинхронным кодом
  3. Потоки и задачи
  4. Делегаты и лямбда-выражения
  5. Рефлексия в C#
← Назад к C# Academy