Language

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
ソース:
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は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元スタックを失い、セキュリティ特権を昇格できます。

Caution

UnsafeRegisterWaitForSingleObjectを使用すると、誤ってセキュリティ ホールが開く可能性があります。 コード アクセス セキュリティは、スタック上のすべての呼び出し元のアクセス許可に対するアクセス許可チェックに基づいて行います。 UnsafeRegisterWaitForSingleObjectを使用してスレッド プール スレッドで作業がキューに登録されている場合、スレッド プール スレッドのスタックには、実際の呼び出し元のコンテキストはありません。 悪意のあるコードは、アクセス許可チェックを回避するためにこれを利用できる可能性があります。

基になる Windows API は既定の Mutex フラグを使用するため、waitObject に 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

タイムアウト (ミリ秒単位) の 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は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元スタックを失い、セキュリティ特権を昇格できます。

Caution

UnsafeRegisterWaitForSingleObjectを使用すると、誤ってセキュリティ ホールが開く可能性があります。 コード アクセス セキュリティは、スタック上のすべての呼び出し元のアクセス許可に対するアクセス許可チェックに基づいて行います。 UnsafeRegisterWaitForSingleObjectを使用してスレッド プール スレッドで作業がキューに登録されている場合、スレッド プール スレッドのスタックには、実際の呼び出し元のコンテキストはありません。 悪意のあるコードは、アクセス許可チェックを回避するためにこれを利用できる可能性があります。

基になる Windows API は既定の Mutex フラグを使用するため、waitObject に 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

タイムアウトの 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は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元スタックを失い、セキュリティ特権を昇格できます。

Caution

UnsafeRegisterWaitForSingleObjectを使用すると、誤ってセキュリティ ホールが開く可能性があります。 コード アクセス セキュリティは、スタック上のすべての呼び出し元のアクセス許可に対するアクセス許可チェックに基づいて行います。 UnsafeRegisterWaitForSingleObjectを使用してスレッド プール スレッドで作業がキューに登録されている場合、スレッド プール スレッドのスタックには、実際の呼び出し元のコンテキストはありません。 悪意のあるコードは、アクセス許可チェックを回避するためにこれを利用できる可能性があります。

基になる Windows API は既定の Mutex フラグを使用するため、waitObject に 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 準拠ではありません。

タイムアウトの 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は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元スタックを失い、セキュリティ特権を昇格できます。

Caution

UnsafeRegisterWaitForSingleObjectを使用すると、誤ってセキュリティ ホールが開く可能性があります。 コード アクセス セキュリティは、スタック上のすべての呼び出し元のアクセス許可に対するアクセス許可チェックに基づいて行います。 UnsafeRegisterWaitForSingleObjectを使用してスレッド プール スレッドで作業がキューに登録されている場合、スレッド プール スレッドのスタックには、実際の呼び出し元のコンテキストはありません。 悪意のあるコードは、アクセス許可チェックを回避するためにこれを利用できる可能性があります。

基になる Windows API は既定の Mutex フラグを使用するため、waitObject に WT_EXECUTEDEFAULT を使用してもコールバックの相互除外は提供されないため、各コールバックは個別のスレッド プール スレッドでディスパッチされます。

このメソッドによって返される RegisteredWaitHandle の使用が完了したら、その RegisteredWaitHandle.Unregister メソッドを呼び出して、待機ハンドルへの参照を解放します。 RegisteredWaitHandle.Unregisterのtrueを指定した場合でも、常に executeOnlyOnce メソッドを呼び出することをお勧めします。 登録されている待機ハンドルのファイナライザーに応じてではなく、 RegisteredWaitHandle.Unregister メソッドを呼び出すと、ガベージ コレクションがより効率的に動作します。

こちらもご覧ください

適用対象