Потоки и задачи
Изучите потоки и задачи для управления параллельной обработкой в C#
«Потоки и задачи» — бесплатный урок C# Academy на CoddyKit. Это урок 3 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 5 уроков всего.
Введение в многопоточность и задачи
Понимание многопоточности и задач
Добро пожаловать на следующий урок! На этом уроке Вы узнаете о потоках и задачах в C#, которые позволяют одновременно выполнять несколько операций для повышения производительности. Давайте начнём!

Что такое многопоточность
Что такое многопоточность?
Многопоточность — это процесс одновременного выполнения нескольких операций. Каждый поток представляет отдельный поток управления в приложении.
Важный момент: Многопоточность повышает производительность благодаря использованию нескольких ядер процессора для параллельного выполнения.
Создание и запуск потоков
Создание и запуск потоков
Вы можете создавать и запускать потоки с помощью класса Thread. Пример:
using System;
using System.Threading;
class Program {
static void Main() {
Thread thread = new Thread(PrintNumbers);
thread.Start();
Console.WriteLine("Main thread is running...");
}
static void PrintNumbers() {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Thread.Sleep(1000); // Pause for 1 second
}
}
}
Введение в задачи
Введение в задачи
Задачи обеспечивают абстракцию более высокого уровня для параллельного программирования по сравнению с потоками. Класс Task входит в библиотеку параллельных задач (TPL) в C#.
Пример: Создание и запуск задачи:
Совет: Задачами проще управлять, и они обеспечивают более эффективную обработку ошибок по сравнению с потоками.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Task task = Task.Run(() => {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Task.Delay(1000).Wait();
}
});
Console.WriteLine("Main thread is running...");
task.Wait(); // Wait for the task to complete
}
}
Использование параллельных циклов For и ForEach
Использование параллельных циклов For и ForEach
Класс Parallel в C# позволяет выполнять циклы параллельно для повышения производительности. Пример:
Важный момент: Используйте Parallel.For и Parallel.ForEach для задач с интенсивной обработкой данных, которые можно выполнять одновременно.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Parallel.For(0, 5, i => {
Console.WriteLine($"Processing {i} on thread {Task.CurrentId}");
});
Console.WriteLine("All tasks completed.");
}
}
Обработка исключений в задачах
Обработка исключений в задачах
Вы можете перехватывать исключения в задачах с помощью блока try-catch или свойства Task.Exception. Пример:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
try {
Task task = Task.Run(() => {
throw new InvalidOperationException("Task failed!");
});
task.Wait();
} catch (AggregateException ex) {
Console.WriteLine("Error: " + ex.InnerException.Message);
}
}
}
Практическое задание
Практическое задание
Создайте программу, которая запускает несколько задач для параллельной обработки чисел и выводит их квадраты. Пример:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
int[] numbers = { 1, 2, 3, 4, 5 };
Parallel.ForEach(numbers, number => {
Console.WriteLine($"Square of {number}: {number * number}");
});
}
}
Рекомендации по многопоточности и задачам
Рекомендации по многопоточности и задачам
Вот несколько рекомендаций:
- Предпочитайте
TaskклассуThreadдля высокоуровневого параллелизма. - Используйте классы
Parallelдля операций с интенсивной обработкой данных. - Правильно обрабатывайте исключения, чтобы обеспечить надёжность приложений.
- Ограничивайте количество потоков или задач, чтобы избежать конкуренции за ресурсы.
Совет: Используйте асинхронное программирование, когда преобладают операции ввода-вывода, а потоки или задачи — когда нагрузка приходится на CPU.
Отличная работа!
Отличная работа!
Поздравляю! Вы изучили основы многопоточности и задач для параллельного программирования на C#. На следующем уроке мы подробно рассмотрим делегаты и лямбда-выражения — две мощные возможности для функционального программирования. Продолжайте программировать!

Часто задаваемые вопросы
Урок «Потоки и задачи» бесплатный?
Да — полный текст урока «Потоки и задачи» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 5 уроков всего.
Чему я научусь в уроке «Потоки и задачи»?
Изучите потоки и задачи для управления параллельной обработкой в C# Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 5.
Сколько времени занимает урок «Потоки и задачи»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Обобщения в C#
- Async и Await: работа с асинхронным кодом
- Потоки и задачи
- Делегаты и лямбда-выражения
- Рефлексия в C#