Thread.Suspend Thread.Suspend Thread.Suspend Thread.Suspend Method

Определение

Предупреждение

Этот API устарел.

Приостанавливает работу потока; если работа потока уже приостановлена, не оказывает влияния.Either suspends the thread, or if the thread is already suspended, has no effect.

public:
 void Suspend();
[System.Obsolete("Thread.Suspend has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202", false)]
[System.Obsolete("Thread.Suspend has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  https://go.microsoft.com/fwlink/?linkid=14202", false)]
public void Suspend ();
member this.Suspend : unit -> unit
Public Sub Suspend ()

Исключения

Только в .NET Core: этот элемент не поддерживается..NET Core only: This member is not supported.

Поток не запущен или удален.The thread has not been started or is dead.

У вызывающей стороны отсутствует надлежащий SecurityPermission.The caller does not have the appropriate SecurityPermission.

Комментарии

Если поток уже приостановлен, этот метод не действует.If the thread is already suspended, this method has no effect.

Внимание!

Не используйте Suspend методы и Resume для синхронизации действий потоков.Do not use the Suspend and Resume methods to synchronize the activities of threads. У вас нет способа узнать, какой код выполняется потоком при его приостановке.You have no way of knowing what code a thread is executing when you suspend it. Если приостановить поток, который удерживает блокировки во время оценки разрешений безопасности, другие потоки в AppDomain могут быть заблокированы.If you suspend a thread while it holds locks during a security permission evaluation, other threads in the AppDomain might be blocked. Если приостановить поток во время выполнения конструктора класса, то другие потоки в AppDomain этой попытке использовать этот класс блокируются.If you suspend a thread while it is executing a class constructor, other threads in the AppDomain that attempt to use that class are blocked. Взаимоблокировки могут происходить очень легко.Deadlocks can occur very easily.

При вызове Suspend метода в потоке система задерживает запрос на приостановку потока и позволяет выполнить поток до того, как он достигнет точки безопасности, прежде чем фактически приостановить поток.When you call the Suspend method on a thread, the system notes that a thread suspension has been requested and allows the thread to execute until it reaches a safe point before actually suspending the thread. Безопасной точкой для потока считается такой этап выполнения, в котором можно безопасно выполнять сборку мусора.A safe point for a thread is a point in its execution at which garbage collection can be performed. После достижения безопасной точки среда выполнения гарантирует, что поток не выполняет никаких действий в управляемом коде.Once a safe point is reached, the runtime guarantees that the suspended thread will not make any further progress in managed code. В потоке, выполняемом вне управляемого кода, всегда можно безопасно выполнить сборку мусора, поэтому его выполнение продолжается, пока он попытается возобновить выполнение управляемого кода.A thread executing outside managed code is always safe for garbage collection, and its execution continues until it attempts to resume execution of managed code.

Безопасность

SecurityPermission
для расширенных операций с потоками.for advanced operations on threads. Связанное перечисление: ControlThread.Associated enumeration: ControlThread.

Применяется к

Дополнительно