Состояния потоков
Обновлен: Ноябрь 2007
Свойство ThreadState предоставляет информацию о состоянии потока. Поскольку потоки могут быть в более чем одном состоянии в любой момент времени, значение, хранящееся в свойстве ThreadState, может быть сочетанием значений перечисления ThreadState. Например, если поток заблокируется по вызову метода Wait и другой поток вызывает метод Abort того же потока, то поток находится в состояниях WaitSleepJoin и AbortRequested одновременно.
Изменение состояний потока
После запуска потока можно вызывать его методы для изменения состояния потока. Например, можно остановить поток на фиксированное число миллисекунд, вызвав метод Thread.Sleep. Метод Sleep принимает в качестве параметра период времени в миллисекундах, в течение которого поток будет заблокирован.
Вызов метода Sleep с аргументом Infinite переводит поток в состояние ожидания до тех пор, пока он не будет прерван другим потоком, который вызовет метод Interrupt. Метод Interrupt выводит указанный поток из любого состояния ожидания, в котором он может быть, и вызывает исключение.
Поток можно также приостановить, вызвав метод Suspend. Если поток вызывает метод Suspend для себя, вызов блокируется до тех пор, пока поток не будет восстановлен другим потоком с помощью вызова Resume. Когда поток вызывает метод Suspend для другого потока, вызов не блокируется, и это приводит к приостановке другого потока. Вызов метода Resume выводит другой поток из заблокированного состояния и возобновляет его выполнение. В отличие от метода Sleep метод Suspend не останавливает поток немедленно; поток продолжает выполняться, пока среда выполнения не определит, что достигнута безопасная точка.
Метод Abort останавливает выполняющийся поток путем вызова исключения ThreadAbortException, которое приводит к прекращению потока.
Для получения подробной информации об этих методах см. раздел Thread.
См. также
Основные понятия
Параметры и возвращаемые значения для многопоточных процедур
Использование многопоточности для форм и элементов управления