ThreadPool.UnsafeRegisterWaitForSingleObject 方法

定義

註冊要等候 WaitHandle 的委派,但不會將呼叫堆疊傳播至背景工作執行緒。

多載

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

指定 WaitHandle 值表示逾時值,藉此註冊要等候 TimeSpan 的委派。這個方法不會將呼叫堆疊傳播至背景工作執行緒。

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

使用 32 位元帶正負號的整數表示逾時值 (以毫秒為單位),藉此註冊要等候 WaitHandle 的委派。 這個方法不會將呼叫堆疊傳播至背景工作執行緒。

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

指定 64 位元帶正負號的整數表示逾時值 (以毫秒為單位),藉此註冊要等候 WaitHandle 的委派。 這個方法不會將呼叫堆疊傳播至背景工作執行緒。

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

指定 32 位元帶正負號的整數表示逾時值 (以毫秒為單位),藉此註冊要等候 WaitHandle 的委派。 這個方法不會將呼叫堆疊傳播至背景工作執行緒。

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 不提供回呼的相互排除,因為基礎 Windows API 會使用預設 WT_EXECUTEDEFAULT 旗標,因此每個回呼都會分派在不同的執行緒集區執行緒上。

當您完成使用 RegisteredWaitHandle 這個方法所傳回的 時,請呼叫其 RegisteredWaitHandle.Unregister 方法來釋放等候控制碼的參考。 即使您為 executeOnlyOnce 指定 true ,也建議您一律呼叫 RegisteredWaitHandle.Unregister 方法。 如果您呼叫 方法, RegisteredWaitHandle.Unregister 而不是根據已註冊的等候控制碼完成項而定,垃圾收集更有效率。

另請參閱

適用於

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

來源:
ThreadPoolWorkQueue.cs
來源:
ThreadPoolWorkQueue.cs
來源:
ThreadPoolWorkQueue.cs

使用 32 位元帶正負號的整數表示逾時值 (以毫秒為單位),藉此註冊要等候 WaitHandle 的委派。 這個方法不會將呼叫堆疊傳播至背景工作執行緒。

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 不提供回呼的相互排除,因為基礎 Windows API 會使用預設 WT_EXECUTEDEFAULT 旗標,因此每個回呼都會分派在不同的執行緒集區執行緒上。

當您完成使用 RegisteredWaitHandle 這個方法所傳回的 時,請呼叫其 RegisteredWaitHandle.Unregister 方法來釋放等候控制碼的參考。 即使您為 executeOnlyOnce 指定 true ,也建議您一律呼叫 RegisteredWaitHandle.Unregister 方法。 如果您呼叫 方法, RegisteredWaitHandle.Unregister 而不是根據已註冊的等候控制碼完成項而定,垃圾收集更有效率。

另請參閱

適用於

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

來源:
ThreadPoolWorkQueue.cs
來源:
ThreadPoolWorkQueue.cs
來源:
ThreadPoolWorkQueue.cs

指定 64 位元帶正負號的整數表示逾時值 (以毫秒為單位),藉此註冊要等候 WaitHandle 的委派。 這個方法不會將呼叫堆疊傳播至背景工作執行緒。

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 不提供回呼的相互排除,因為基礎 Windows API 會使用預設 WT_EXECUTEDEFAULT 旗標,因此每個回呼都會分派在不同的執行緒集區執行緒上。

當您完成使用 RegisteredWaitHandle 這個方法所傳回的 時,請呼叫其 RegisteredWaitHandle.Unregister 方法來釋放等候控制碼的參考。 即使您為 executeOnlyOnce 指定 true ,也建議您一律呼叫 RegisteredWaitHandle.Unregister 方法。 如果您呼叫 方法, RegisteredWaitHandle.Unregister 而不是根據已註冊的等候控制碼完成項而定,垃圾收集更有效率。

另請參閱

適用於

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

來源:
ThreadPoolWorkQueue.cs
來源:
ThreadPoolWorkQueue.cs
來源:
ThreadPoolWorkQueue.cs

重要

此 API 不符合 CLS 規範。

指定 32 位元帶正負號的整數表示逾時值 (以毫秒為單位),藉此註冊要等候 WaitHandle 的委派。 這個方法不會將呼叫堆疊傳播至背景工作執行緒。

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 不提供回呼的相互排除,因為基礎 Windows API 會使用預設 WT_EXECUTEDEFAULT 旗標,因此每個回呼都會分派在不同的執行緒集區執行緒上。

當您完成使用 RegisteredWaitHandle 這個方法所傳回的 時,請呼叫其 RegisteredWaitHandle.Unregister 方法來釋放等候控制碼的參考。 即使您為 executeOnlyOnce 指定 true ,也建議您一律呼叫 RegisteredWaitHandle.Unregister 方法。 如果您呼叫 方法, RegisteredWaitHandle.Unregister 而不是根據已註冊的等候控制碼完成項而定,垃圾收集更有效率。

另請參閱

適用於