ThreadPool.UnsafeRegisterWaitForSingleObject Метод

Определение

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

Перегрузки

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)

Регистрирует делегат для ожидания объекта WaitHandle, задавая значение TimeSpan для времени ожидания. Этот метод не распространяет вызывающий стек на рабочий поток.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

Регистрирует делегат для ожидания объекта WaitHandle, задавая время ожидания в миллисекундах в виде 32-разрядного целого числа со знаком. Этот метод не распространяет вызывающий стек на рабочий поток.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)

Регистрирует делегат для ожидания объекта WaitHandle, задавая время ожидания в миллисекундах в виде 64-разрядного целого числа со знаком. Этот метод не распространяет вызывающий стек на рабочий поток.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

Регистрирует делегат для ожидания объекта WaitHandle, задавая время ожидания в миллисекундах в виде 32-разрядного целого числа без знака. Этот метод не распространяет вызывающий стек на рабочий поток.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)

Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs

Регистрирует делегат для ожидания объекта WaitHandle, задавая значение TimeSpan для времени ожидания. Этот метод не распространяет вызывающий стек на рабочий поток.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, TimeSpan timeout, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, TimeSpan timeout, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, TimeSpan timeout, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, TimeSpan timeout, bool executeOnlyOnce);
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, TimeSpan timeout, bool executeOnlyOnce);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * TimeSpan * bool -> System.Threading.RegisteredWaitHandle
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * TimeSpan * bool -> System.Threading.RegisteredWaitHandle
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * TimeSpan * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, timeout As TimeSpan, executeOnlyOnce As Boolean) As RegisteredWaitHandle

Параметры

waitObject
WaitHandle

Регистрируемый объект WaitHandle. Используйте объект WaitHandle, отличный от Mutex.

callBack
WaitOrTimerCallback

Делегат, который вызывается при получении сигнала объектом, указанным в параметре waitObject.

state
Object

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

timeout
TimeSpan

Время ожидания, представленное объектом TimeSpan. Если параметр timeout равен 0 (нулю), функция проверяет состояние объекта и немедленно возвращает значение. Если параметр timeout равен -1, время ожидания функции никогда не истекает.

executeOnlyOnce
Boolean

Значение true указывает, что после вызова делегата поток не будет ожидать параметр waitObject; значение false указывает, что таймер сбрасывается всякий раз по завершении операции ожидания до тех пор, пока регистрация ожидания не будет отменена.

Возвращаемое значение

Объект RegisteredWaitHandle, который можно использовать для отмены зарегистрированной операции ожидания.

Атрибуты

Исключения

Значение параметра timeout меньше –1.

Параметр timeout больше Int32.MaxValue.

У вызывающего объекта отсутствует необходимое разрешение.

Комментарии

RegisterWaitForSingleObject В отличие от метода, UnsafeRegisterWaitForSingleObject не распространяет вызывающий стек на рабочий поток. Это позволяет коду потерять вызывающий стек и тем самым повысить его привилегии безопасности.

Внимание!

Использование UnsafeRegisterWaitForSingleObject может непреднамеренно открыть дыру в системе безопасности. Безопасность доступа к коду основывает свои проверки разрешений на разрешениях всех вызывающих объектов в стеке. Если работа помещается в очередь в поток пула потоков с помощью UnsafeRegisterWaitForSingleObject, стек потока пула потоков не будет иметь контекст фактических вызывающих объектов. Вредоносный код может воспользоваться этим, чтобы избежать проверок разрешений.

Mutex Использование для waitObject не обеспечивает взаимного исключения для обратных вызовов, так как базовый API Windows использует флаг по умолчаниюWT_EXECUTEDEFAULT, поэтому каждый обратный вызов отправляется в отдельный поток пула потоков.

Завершив использование RegisteredWaitHandle объекта , возвращаемого этим методом, вызовите его RegisteredWaitHandle.Unregister метод , чтобы освободить ссылки на дескриптор ожидания. Рекомендуется всегда вызывать RegisteredWaitHandle.Unregister метод, даже если для задано значение trueexecuteOnlyOnce. Сборка мусора работает эффективнее при вызове RegisteredWaitHandle.Unregister метода , а не в зависимости от метода завершения зарегистрированного дескриптора ожидания.

См. также раздел

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

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs

Регистрирует делегат для ожидания объекта WaitHandle, задавая время ожидания в миллисекундах в виде 32-разрядного целого числа со знаком. Этот метод не распространяет вызывающий стек на рабочий поток.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int * bool -> System.Threading.RegisteredWaitHandle
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int * bool -> System.Threading.RegisteredWaitHandle
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, millisecondsTimeOutInterval As Integer, executeOnlyOnce As Boolean) As RegisteredWaitHandle

Параметры

waitObject
WaitHandle

Регистрируемый объект WaitHandle. Используйте объект WaitHandle, отличный от Mutex.

callBack
WaitOrTimerCallback

Делегат, который вызывается при получении сигнала объектом, указанным в параметре waitObject.

state
Object

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

millisecondsTimeOutInterval
Int32

Время ожидания в миллисекундах. Если параметр millisecondsTimeOutInterval равен 0 (нулю), функция проверяет состояние объекта и немедленно возвращает значение. Если параметр millisecondsTimeOutInterval равен -1, время ожидания функции никогда не истекает.

executeOnlyOnce
Boolean

Значение true указывает, что после вызова делегата поток не будет ожидать параметр waitObject; значение false указывает, что таймер сбрасывается всякий раз по завершении операции ожидания до тех пор, пока регистрация ожидания не будет отменена.

Возвращаемое значение

Объект RegisteredWaitHandle, который можно использовать для отмены зарегистрированной операции ожидания.

Атрибуты

Исключения

Значение параметра millisecondsTimeOutInterval меньше –1.

У вызывающего объекта отсутствует необходимое разрешение.

Комментарии

RegisterWaitForSingleObject В отличие от метода, UnsafeRegisterWaitForSingleObject не распространяет вызывающий стек на рабочий поток. Это позволяет коду потерять вызывающий стек и тем самым повысить его привилегии безопасности.

Внимание!

Использование UnsafeRegisterWaitForSingleObject может непреднамеренно открыть дыру в системе безопасности. Безопасность доступа к коду основывает свои проверки разрешений на разрешениях всех вызывающих объектов в стеке. Если работа помещается в очередь в поток пула потоков с помощью UnsafeRegisterWaitForSingleObject, стек потока пула потоков не будет иметь контекст фактических вызывающих объектов. Вредоносный код может воспользоваться этим, чтобы избежать проверок разрешений.

Mutex Использование для waitObject не обеспечивает взаимного исключения для обратных вызовов, так как базовый API Windows использует флаг по умолчаниюWT_EXECUTEDEFAULT, поэтому каждый обратный вызов отправляется в отдельный поток пула потоков.

Завершив использование RegisteredWaitHandle объекта , возвращаемого этим методом, вызовите его RegisteredWaitHandle.Unregister метод , чтобы освободить ссылки на дескриптор ожидания. Рекомендуется всегда вызывать RegisteredWaitHandle.Unregister метод, даже если для задано значение trueexecuteOnlyOnce. Сборка мусора работает эффективнее при вызове RegisteredWaitHandle.Unregister метода , а не в зависимости от метода завершения зарегистрированного дескриптора ожидания.

См. также раздел

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

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)

Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs

Регистрирует делегат для ожидания объекта WaitHandle, задавая время ожидания в миллисекундах в виде 64-разрядного целого числа со знаком. Этот метод не распространяет вызывающий стек на рабочий поток.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int64 * bool -> System.Threading.RegisteredWaitHandle
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int64 * bool -> System.Threading.RegisteredWaitHandle
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int64 * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, millisecondsTimeOutInterval As Long, executeOnlyOnce As Boolean) As RegisteredWaitHandle

Параметры

waitObject
WaitHandle

Регистрируемый объект WaitHandle. Используйте объект WaitHandle, отличный от Mutex.

callBack
WaitOrTimerCallback

Делегат, который вызывается при получении сигнала объектом, указанным в параметре waitObject.

state
Object

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

millisecondsTimeOutInterval
Int64

Время ожидания в миллисекундах. Если параметр millisecondsTimeOutInterval равен 0 (нулю), функция проверяет состояние объекта и немедленно возвращает значение. Если параметр millisecondsTimeOutInterval равен -1, время ожидания функции никогда не истекает.

executeOnlyOnce
Boolean

Значение true указывает, что после вызова делегата поток не будет ожидать параметр waitObject; значение false указывает, что таймер сбрасывается всякий раз по завершении операции ожидания до тех пор, пока регистрация ожидания не будет отменена.

Возвращаемое значение

Объект RegisteredWaitHandle, который можно использовать для отмены зарегистрированной операции ожидания.

Атрибуты

Исключения

Значение параметра millisecondsTimeOutInterval меньше –1.

У вызывающего объекта отсутствует необходимое разрешение.

Комментарии

RegisterWaitForSingleObject В отличие от метода, UnsafeRegisterWaitForSingleObject не распространяет вызывающий стек на рабочий поток. Это позволяет коду потерять вызывающий стек и тем самым повысить его привилегии безопасности.

Внимание!

Использование UnsafeRegisterWaitForSingleObject может непреднамеренно открыть дыру в системе безопасности. Безопасность доступа к коду основывает свои проверки разрешений на разрешениях всех вызывающих объектов в стеке. Если работа помещается в очередь в поток пула потоков с помощью UnsafeRegisterWaitForSingleObject, стек потока пула потоков не будет иметь контекст фактических вызывающих объектов. Вредоносный код может воспользоваться этим, чтобы избежать проверок разрешений.

Mutex Использование для waitObject не обеспечивает взаимного исключения для обратных вызовов, так как базовый API Windows использует флаг по умолчаниюWT_EXECUTEDEFAULT, поэтому каждый обратный вызов отправляется в отдельный поток пула потоков.

Завершив использование RegisteredWaitHandle объекта , возвращаемого этим методом, вызовите его RegisteredWaitHandle.Unregister метод , чтобы освободить ссылки на дескриптор ожидания. Рекомендуется всегда вызывать RegisteredWaitHandle.Unregister метод, даже если для задано значение trueexecuteOnlyOnce. Сборка мусора работает эффективнее при вызове RegisteredWaitHandle.Unregister метода , а не в зависимости от метода завершения зарегистрированного дескриптора ожидания.

См. также раздел

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

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs

Важно!

Этот API несовместим с CLS.

Регистрирует делегат для ожидания объекта WaitHandle, задавая время ожидания в миллисекундах в виде 32-разрядного целого числа без знака. Этот метод не распространяет вызывающий стек на рабочий поток.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, System::UInt32 millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * uint32 * bool -> System.Threading.RegisteredWaitHandle
[<System.CLSCompliant(false)>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * uint32 * bool -> System.Threading.RegisteredWaitHandle
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * uint32 * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, millisecondsTimeOutInterval As UInteger, executeOnlyOnce As Boolean) As RegisteredWaitHandle

Параметры

waitObject
WaitHandle

Регистрируемый объект WaitHandle. Используйте объект WaitHandle, отличный от Mutex.

callBack
WaitOrTimerCallback

Делегат, который вызывается при получении сигнала объектом, указанным в параметре waitObject.

state
Object

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

millisecondsTimeOutInterval
UInt32

Время ожидания в миллисекундах. Если параметр millisecondsTimeOutInterval равен 0 (нулю), функция проверяет состояние объекта и немедленно возвращает значение. Если параметр millisecondsTimeOutInterval равен -1, время ожидания функции никогда не истекает.

executeOnlyOnce
Boolean

Значение true указывает, что после вызова делегата поток не будет ожидать параметр waitObject; значение false указывает, что таймер сбрасывается всякий раз по завершении операции ожидания до тех пор, пока регистрация ожидания не будет отменена.

Возвращаемое значение

Объект RegisteredWaitHandle, который можно использовать для отмены зарегистрированной операции ожидания.

Атрибуты

Исключения

У вызывающего объекта отсутствует необходимое разрешение.

Комментарии

RegisterWaitForSingleObject В отличие от метода , UnsafeRegisterWaitForSingleObject не распространяет вызывающий стек на рабочий поток. Это позволяет коду потерять вызывающий стек и тем самым повысить привилегии безопасности.

Внимание!

Использование UnsafeRegisterWaitForSingleObject может непреднамеренно открыть дыру в системе безопасности. Безопасность доступа к коду основывает свои проверки разрешений на разрешениях всех вызывающих объектов в стеке. Если работа помещается в очередь в потоке пула потоков с помощью UnsafeRegisterWaitForSingleObject, стек потока пула потоков не будет иметь контекст фактических вызывающих объектов. Вредоносный код может воспользоваться этим, чтобы избежать проверок разрешений.

Mutex Использование для waitObject не обеспечивает взаимное исключение для обратных вызовов, так как базовый API Windows использует флаг по умолчаниюWT_EXECUTEDEFAULT, поэтому каждый обратный вызов отправляется в отдельный поток пула потоков.

Завершив использование RegisteredWaitHandle объекта , возвращаемого этим методом, вызовите его RegisteredWaitHandle.Unregister метод , чтобы освободить ссылки на дескриптор ожидания. Рекомендуется всегда вызывать RegisteredWaitHandle.Unregister метод , даже если для задано значение trueexecuteOnlyOnce. Сборка мусора работает более эффективно при вызове RegisteredWaitHandle.Unregister метода , а не в зависимости от метода завершения зарегистрированного дескриптора ожидания.

См. также раздел

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