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
- Исходный код:
- 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.
Вызывающий объект не имеет требуемого разрешения.
Комментарии
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
- Исходный код:
- 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
- Исходный код:
- 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
- Исходный код:
- 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 вместо метода в зависимости от метода завершения зарегистрированного дескриптора ожидания.