В C# потоки управляются через класс
Thread из пространства имен System.Threading. Поток проходит несколько этапов на протяжении своего жизненного цикла. Давайте разберём эти этапы.— Unstarted. Не запущен
Поток создан, но ещё не запущен. Он находится в этом состоянии сразу после инициализации объекта
Thread, но до вызова метода Start().Thread thread = new Thread(MyMethod);
// Поток создан, но не запущен
— Running. Выполняется
Поток начинает выполнение после вызова
Start(). В этом состоянии поток выполняет код, переданный в качестве делегата.thread.Start();
// Поток запущен и выполняется
— Waiting. Ожидание
Поток приостанавливается, ожидая выполнения какого-либо условия или ресурса. Это может быть вызвано методами:
•
Thread.Sleep() — поток засыпает на заданное время.•
Monitor.Wait() или lock — поток ожидает захвата монитора.•
Thread.Join() — поток ожидает завершения другого потока.Thread.Sleep(1000);
// Поток приостановлен на 1 секунду
— Blocked. Заблокирован
Поток заблокирован, пытаясь получить доступ к ресурсу, уже занятому другим потоком. Например, ожидание захвата блокировки через
lock.— Stopped. Остановлен
Поток завершает выполнение. Это состояние наступает, когда метод, выполняемый в потоке, завершает работу или вызывается устаревший метод
Abort(). Поток в этом состоянии больше нельзя запустить снова.thread.Join();
// Основной поток ожидает завершения
Дополнительные состояния
— Background. Фоновый поток
Поток может быть фоновым, если свойство
IsBackground установлено в true. Фоновые потоки завершаются автоматически, когда завершается основной поток приложения.thread.IsBackground = true;
// Устанавливаем поток как фоновый
— Suspended. Приостановлен (устарело)
Метод
Suspend() приостанавливал выполнение потока, но был удалён из новых версий .NET из-за возможных проблем с безопасностью.📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#лучшее_из_библиотеки_2025