---
title: Асинхронность
seo:
  title: "Асинхронность — С# Developer"
  description: "Тема «Асинхронность» для собеседования С# Developer. Что такое асинхронность и чем она отличается от многопоточности? Какие есть ключевые слова для использования асинхронности в коде?"
---

[Все темы С# Developer](/s-developer)

## <strong>Что такое асинхронность и чем она отличается от многопоточности?</strong> [#q-14bee738d69b8144a3f8cdda4d992191]

Асинхронность&#58;

- <strong>Определение&#58;</strong> Выполнение задач без блокировки основного
  потока, позволяя другим операциям продолжаться до завершения задачи.

- <strong>Использование&#58;</strong> Методы <code>async</code> и
  <code>await</code> в C#.

- <strong>Цель&#58;</strong> Улучшение отзывчивости приложений, особенно при
  выполнении ввода-вывода (I/O).

Многопоточность&#58;

- <strong>Определение&#58;</strong> Одновременное выполнение нескольких потоков
  в одном процессе.

- <strong>Использование&#58;</strong> Создание и управление потоками (threads).

- <strong>Цель&#58;</strong> Параллельное выполнение задач для улучшения
  производительности, особенно для вычислительно интенсивных задач.

#### Итог&#58;

- <strong>Асинхронность&#58;</strong> Не блокирует потоки, управляет задачами.

- <strong>Многопоточность&#58;</strong> Использует несколько потоков для
  параллельной работы.

:::note[Ссылки для изучения]

1. [Разница между многопоточностью и параллелизмом](https://tproger.ru/articles/parallelizm-mnogopotochnost-asinhronnost-raznica-i-primery-primenenija-net-c)
   :::

---

## <strong>Какие есть ключевые слова для использования асинхронности в коде?</strong> [#q-14bee738d69b81939e89ed9f039a50e9]

В C# есть следующие ключевые слова, для использования асинхронности&#58;

1. <code>async</code> - Объявляет метод асинхронным.

   ```csharp
   public async Task MyAsyncMethod() { /* ... */ }
   ```

1. <code>await</code> - Приостанавливает выполнение метода до завершения
   асинхронной задачи.

   ```csharp
   await SomeAsyncMethod();
   ```

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

:::note[Ссылки для изучения]

1. [Асинхронное ключевое слово](https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/async)
   :::

---

## <strong>Что означают ключевые слова</strong> <code>async</code> <strong>/</strong> <code>await</code><strong>?</strong> [#q-14bee738d69b81feadb5ebf13aa521f8]

<code>async</code>&#58;

- <strong>Определение&#58;</strong> Указывает, что метод является асинхронным и
  может содержать <code>await</code>.

- <strong>Пример&#58;</strong>

  ```csharp
  public async Task MyAsyncMethod() { /* ... */ }
  ```

<code>await</code>&#58;

- <strong>Определение&#58;</strong> Приостанавливает выполнение асинхронного
  метода до завершения ожидаемой задачи.

- <strong>Пример&#58;</strong>

  ```csharp
  await SomeAsyncMethod();
  ```

#### Итог&#58;

- <code>async</code>
  <strong>&#58;</strong> Метка для асинхронного метода.

- <code>await</code>
  <strong>&#58;</strong> Ожидание завершения асинхронной операции.

:::note[Ссылки для изучения]

1. [Сценарии асинхронного программирования](https://learn.microsoft.com/ru-ru/dotnet/csharp/asynchronous-programming/async-scenarios)
   :::
