Примеры Кода для Повседневных Задач
В этой серии представлю вам коллекцию фрагментов кода C#, охватывающих широкий спектр сценариев, с которыми вы можете столкнуться при разработке ПО.
IV. Потоки
Многопоточная обработка — важный аспект параллельного программирования на C#. Рассмотрим, как работать с потоками, используя пространство имен System.Threading.
1. Создание нового потока
Чтобы создать новый поток в C#, вы можете использовать класс Thread:
using System.Threading;
void PrintNumbers()
{
for (int i = 1; i <= 5; i++)
Console.WriteLine(i);
}
var thread = new Thread(PrintNumbers);
2. Операции над потоком
- Запуск
thread.Start();
- Слияние (ожидание завершения потока)
thread.Join();
- Приостановка (текущий поток)
Thread.Sleep(1000); // пауза на 1 секунду
См. подробнее о потоках
3. Использование пула потоков
Для работы с пулом потоков используется класс ThreadPool:
using System.Threading;
ThreadPool.QueueUserWorkItem(PrintNumbers);
См. подробнее о пуле потоков
V. Задачи
1. Создание новой задачи
Для создания и запуска задачи используется класс Task:
using System.Threading.Tasks;
Task.Run(PrintNumbers);
См. подробнее о задачах
2. Ожидание задачи
var task = Task.Run(PrintNumbers);
task.Wait();
3. Отмена задачи
Для отмены задачи в C# используется класс CancellationTokenSource, создающий токен отмены. А для собственно отмены – метод токена Cancel():
using System.Threading;
using System.Threading.Tasks;
var cts = new CancellationTokenSource();
Task.Run(() => PrintNumbers(), cts.Token);
cts.Cancel();
См. подробнее «Скоординированная отмена»
Источник: https://medium.com/bytehide/100-csharp-code-snippets-for-everyday-problems-e913c786dec9