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 метод, даже если для задано значение true
executeOnlyOnce
. Сборка мусора работает эффективнее при вызове 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 метод, даже если для задано значение true
executeOnlyOnce
. Сборка мусора работает эффективнее при вызове 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 метод, даже если для задано значение true
executeOnlyOnce
. Сборка мусора работает эффективнее при вызове 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 метод , даже если для задано значение true
executeOnlyOnce
. Сборка мусора работает более эффективно при вызове RegisteredWaitHandle.Unregister метода , а не в зависимости от метода завершения зарегистрированного дескриптора ожидания.