... > C# > Асинхронное программирование в...

Асинхронное программирование в C#

НАВИГАЦИЯ ПО СТРАНИЦЕ

Ключевые слова async и await Task и Task\<T\> Асинхронные методы Parallel.ForEach Cancellation Token

Асинхронное программирование в C# предоставляет механизмы для эффективного управления параллельными операциями и предотвращения блокировки основного потока выполнения. Это особенно полезно при работе с операциями ввода/вывода (I/O), сетевыми запросами и другими задачами, которые могут занимать много времени.

  1. Ключевые слова async и await:

    • Ключевое слово async используется для объявления метода как асинхронного.

    • Оператор await используется для ожидания завершения асинхронной операции.

      async Task<string> DownloadDataAsync()
      {
          // Асинхронная операция, например, загрузка данных из сети
          string result = await DownloadFromNetworkAsync();
          return result;
      }
  2. Task и Task\<T\>:

    • Объекты типа Task представляют асинхронную операцию без возвращаемого значения.

    • Task<T> представляет асинхронную операцию с возвращаемым значением типа T.

      Task<int> CalculateAsync()
      {
          return Task.Run(() => 42);
      }
  3. Асинхронные методы в событиях и делегатах:

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

      async void Button_Click(object sender, EventArgs e)
      {
          await PerformAsyncOperation();
      }
  4. Parallel.ForEach и Parallel.For:

    • Parallel.ForEach и Parallel.For позволяют выполнять итерации по коллекциям или диапазонам индексов параллельно.

      Parallel.ForEach(items, item =>
      {
          ProcessItem(item);
      });
  5. Cancellation Token:

    • Использование CancellationToken позволяет отменять асинхронные операции, если это необходимо.

      async Task<string> DownloadDataAsync(CancellationToken cancellationToken)
      {
          // Асинхронная операция с поддержкой отмены
          string result = await DownloadFromNetworkAsync(cancellationToken);
          return result;
      }

Пример кода с использованием асинхронного программирования:

async Task<int> SumAsync()
{
    int result = await Task.Run(() =>
    {
        int sum = 0;
        for (int i = 1; i <= 100; i++)
        {
            sum += i;
        }
        return sum;
    });
    return result;
}

Этот код демонстрирует асинхронный метод SumAsync, который выполняет асинхронную операцию с использованием “Task.Run” для вычисления суммы чисел от 1 до 100.

Асинхронное программирование в C# обеспечивает эффективное управление параллельными операциями, улучшая отзывчивость приложения и предотвращая блокировку основного потока выполнения.