次の方法で共有


ThreadPool.UnsafeRegisterWaitForSingleObject メソッド

定義

WaitHandle を待機するデリゲートを登録します。ただし、コール スタックをワーカー スレッドに反映しません。

オーバーロード

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

TimeSpan 値をタイムアウトとして指定して、WaitHandle を待機するデリゲートを登録します。このメソッドはコール スタックをワーカー スレッドに反映しません。

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

TimeSpan 値をタイムアウトとして指定して、WaitHandle を待機するデリゲートを登録します。このメソッドはコール スタックをワーカー スレッドに反映しません。

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

登録する WaitHandleMutex 以外の WaitHandle を使用します。

callBack
WaitOrTimerCallback

waitObject パラメーターがシグナル通知されたときに呼び出すデリゲート。

state
Object

デリゲートに渡されるオブジェクト。

timeout
TimeSpan

TimeSpan で表されるタイムアウト。 timeout が 0 (ゼロ) の場合、関数はオブジェクトの状態をテストして、すぐに制御を戻します。 timeout が -1 の場合、関数はタイムアウトしません。

executeOnlyOnce
Boolean

デリゲートの呼び出し後、スレッドが waitObject パラメーターを待機しなくなる場合は true。待機が登録解除されるまでは、待機操作が完了するたびにタイマーをリセットする場合は false

戻り値

登録された待機操作をキャンセルするために使用できる RegisteredWaitHandle オブジェクト。

属性

例外

timeout パラメーターが -1 未満。

パラメーターが timeoutInt32.MaxValue より大きい。

呼び出し元に、必要なアクセス許可がありません。

注釈

RegisterWaitForSingleObjectメソッドとは異なり、 UnsafeRegisterWaitForSingleObject は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元のスタックを失い、セキュリティ特権を昇格できます。

注意事項

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

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

このメソッドによって返される を RegisteredWaitHandle 使用し終わったら、その RegisteredWaitHandle.Unregister メソッドを呼び出して待機ハンドルへの参照を解放します。 に を指定trueexecuteOnlyOnceした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

登録する WaitHandleMutex 以外の WaitHandle を使用します。

callBack
WaitOrTimerCallback

waitObject パラメーターがシグナル通知されたときに呼び出すデリゲート。

state
Object

デリゲートに渡されるオブジェクト。

millisecondsTimeOutInterval
Int32

ミリ秒単位のタイムアウト。 millisecondsTimeOutInterval パラメーターが 0 (ゼロ) の場合、関数はオブジェクトの状態をテストして、すぐに制御を戻します。 millisecondsTimeOutInterval が -1 の場合、関数はタイムアウトしません。

executeOnlyOnce
Boolean

デリゲートの呼び出し後、スレッドが waitObject パラメーターを待機しなくなる場合は true。待機が登録解除されるまでは、待機操作が完了するたびにタイマーをリセットする場合は false

戻り値

登録された待機操作をキャンセルするために使用できる RegisteredWaitHandle オブジェクト。

属性

例外

millisecondsTimeOutInterval パラメーターが -1 未満。

呼び出し元に、必要なアクセス許可がありません。

注釈

RegisterWaitForSingleObjectメソッドとは異なり、 UnsafeRegisterWaitForSingleObject は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元のスタックを失い、セキュリティ特権を昇格できます。

注意事項

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

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

このメソッドによって返される を RegisteredWaitHandle 使用し終わったら、その RegisteredWaitHandle.Unregister メソッドを呼び出して待機ハンドルへの参照を解放します。 に を指定trueexecuteOnlyOnceした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

登録する WaitHandleMutex 以外の WaitHandle を使用します。

callBack
WaitOrTimerCallback

waitObject パラメーターがシグナル通知されたときに呼び出すデリゲート。

state
Object

デリゲートに渡されるオブジェクト。

millisecondsTimeOutInterval
Int64

ミリ秒単位のタイムアウト。 millisecondsTimeOutInterval パラメーターが 0 (ゼロ) の場合、関数はオブジェクトの状態をテストして、すぐに制御を戻します。 millisecondsTimeOutInterval が -1 の場合、関数はタイムアウトしません。

executeOnlyOnce
Boolean

デリゲートの呼び出し後、スレッドが waitObject パラメーターを待機しなくなる場合は true。待機が登録解除されるまでは、待機操作が完了するたびにタイマーをリセットする場合は false

戻り値

登録された待機操作をキャンセルするために使用できる RegisteredWaitHandle オブジェクト。

属性

例外

millisecondsTimeOutInterval パラメーターが -1 未満。

呼び出し元に、必要なアクセス許可がありません。

注釈

RegisterWaitForSingleObjectメソッドとは異なり、 UnsafeRegisterWaitForSingleObject は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元のスタックを失い、セキュリティ特権を昇格できます。

注意事項

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

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

このメソッドによって返される を RegisteredWaitHandle 使用し終わったら、その RegisteredWaitHandle.Unregister メソッドを呼び出して待機ハンドルへの参照を解放します。 に を指定trueexecuteOnlyOnceした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

登録する WaitHandleMutex 以外の WaitHandle を使用します。

callBack
WaitOrTimerCallback

waitObject パラメーターがシグナル通知されたときに呼び出すデリゲート。

state
Object

デリゲートに渡されるオブジェクト。

millisecondsTimeOutInterval
UInt32

ミリ秒単位のタイムアウト。 millisecondsTimeOutInterval パラメーターが 0 (ゼロ) の場合、関数はオブジェクトの状態をテストして、すぐに制御を戻します。 millisecondsTimeOutInterval が -1 の場合、関数はタイムアウトしません。

executeOnlyOnce
Boolean

デリゲートの呼び出し後、スレッドが waitObject パラメーターを待機しなくなる場合は true。待機が登録解除されるまでは、待機操作が完了するたびにタイマーをリセットする場合は false

戻り値

登録された待機操作をキャンセルするために使用できる RegisteredWaitHandle オブジェクト。

属性

例外

呼び出し元に、必要なアクセス許可がありません。

注釈

RegisterWaitForSingleObjectメソッドとは異なり、 UnsafeRegisterWaitForSingleObject は呼び出し元のスタックをワーカー スレッドに伝達しません。 これにより、コードは呼び出し元のスタックを失い、それによってセキュリティ特権を昇格できます。

注意事項

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

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

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

こちらもご覧ください

適用対象