Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Потоки.doc
Скачиваний:
10
Добавлен:
24.12.2018
Размер:
449.02 Кб
Скачать

Защищенные методы

Finalize

Переопределен. Освобождает ресурсы, удерживаемые экземпляром.

В языках C# и C++ для функций финализации используется синтаксис деструктора.

MemberwiseClone (унаследовано от Object)

Создает неполную копию текущего Object.

- статический

ThreadState - перечисление

Задает состояния выполнения объекта Thread.

Атрибут FlagsAttribute этого перечисления разрешает двоичные операции со значениями его членов.

[Flags]

[Serializable]

public enum ThreadState

Примечания

Класс ThreadState определяет набор всех возможных состояний выполнения для потока. После создания потока и до завершения он находится по крайней мере в одном из состояний. Потоки, созданные в общеязыковой среде выполнения, изначально находятся в состоянии Unstarted, в то время как внешние потоки, приходящие в среду выполнения, находятся уже в состоянии Running. Потоки с состоянием Unstarted переходят в состояние Running при вызове метода Start. Не все комбинации значений ThreadState являются допустимыми; например, поток не может быть одновременно в состояниях Aborted и Unstarted.

В следующей таблице перечислены действия, вызывающие смену состояния.

Действие

Состояние Потока

Поток создается в среде CLR.

Unstarted

Поток вызывает метод Start.

Running

Поток начинает выполнение.

Running

Поток вызывает метод Sleep.

WaitSleepJoin

Поток вызывает метод Wait для другого объекта.

WaitSleepJoin

Поток вызывает метод Join для другого потока.

WaitSleepJoin

Другой поток вызывает метод Interrupt.

Running

Другой поток вызывает метод Suspend.

SuspendRequested

Поток отвечает на запрос метода Suspend.

Suspended

Другой поток вызывает метод Resume.

Running

Другой поток вызывает метод Abort.

AbortRequested

Поток отвечает на запрос метода Abort.

Stopped

Поток завершен.

Stopped

В дополнение к вышеперечисленным состояниям, существует также Background состояние, которое указывает, выполняется ли поток на фоне или на переднем плане.

Поток может находиться в более, чем одном состоянии одновременно. Например, если поток заблокирован при вызове к методу Wait, а другой поток вызывает метод Abort к заблокированному потоку, то этот заблокированный поток будет находится одновременно в состояниях WaitSleepJoin и AbortRequested. В этом случае, как только поток осуществляет возврат из вызова к методу Wait или его работа прерывается, он получит исключение ThreadAbortException для начала аварийного завершения.

Свойство Thread.ThreadState потока содержит текущее состояние потока. Приложения должны использовать битовую маску для того, чтобы определить, выполняется поток или нет. Если значение для состояния Running потока равно нулю (0), следует проверить, выполняется ли поток, используя код C#, например, (myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0, или код Visual Basic, например, (myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0.

Члены

Имя члена

Описание

Значение

Aborted

Поток находится в Stopped состоянии.

256

AbortRequested

Метод Thread.Abort был вызван для потока, но поток еще не получил задерживающийся объект System.Threading.ThreadAbortException, который будет пытаться завершить поток.

128

Background

Поток выполняется как фоновый поток, что является противоположным к приоритетному потоку. Это состояние контролируется заданием свойства Thread.IsBackground.

4

Running

Поток был запущен, он не заблокирован, и нет задерживающегося объекта ThreadAbortException.

0

Stopped

Процесс остановлен.

16

StopRequested

Поток запрашивается на остановку. Это только для внутреннего использования.

1

Suspended

Работа потока была приостановлена.

64

SuspendRequested

Запрашивается приостановка работы потока.

2

Unstarted

Метод Thread.Start не был вызван для потока.

8

WaitSleepJoin

Поток заблокирован в результате вызова к методам Wait, Sleep или Join.

32