ThreadPool.UnsafeRegisterWaitForSingleObject メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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)
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
登録する WaitHandle。 Mutex 以外の WaitHandle を使用します。
- callBack
- WaitOrTimerCallback
waitObject
パラメーターがシグナル通知されたときに呼び出すデリゲート。
- state
- Object
デリゲートに渡されるオブジェクト。
- timeout
- TimeSpan
TimeSpan で表されるタイムアウト。
timeout
が 0 (ゼロ) の場合、関数はオブジェクトの状態をテストして、すぐに制御を戻します。
timeout
が -1 の場合、関数はタイムアウトしません。
- executeOnlyOnce
- Boolean
デリゲートの呼び出し後、スレッドが waitObject
パラメーターを待機しなくなる場合は true
。待機が登録解除されるまでは、待機操作が完了するたびにタイマーをリセットする場合は false
。
戻り値
登録された待機操作をキャンセルするために使用できる RegisteredWaitHandle オブジェクト。
- 属性
例外
timeout
パラメーターが -1 未満。
パラメーターが timeout
Int32.MaxValue より大きい。
呼び出し元に、必要なアクセス許可がありません。
注釈
RegisterWaitForSingleObjectメソッドとは異なり、 UnsafeRegisterWaitForSingleObject は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元のスタックを失い、セキュリティ特権を昇格できます。
注意事項
を使用すると UnsafeRegisterWaitForSingleObject 、誤ってセキュリティ ホールが開く可能性があります。 コード アクセス セキュリティは、スタック上のすべての呼び出し元のアクセス許可に対するアクセス許可チェックに基づいて行います。 を使用して UnsafeRegisterWaitForSingleObjectスレッド プール スレッドで作業をキューに入れると、スレッド プール スレッドのスタックには、実際の呼び出し元のコンテキストがありません。 悪意のあるコードは、アクセス許可チェックを回避するためにこれを悪用する可能性があります。
Mutex基になる Windows API は既定WT_EXECUTEDEFAULT
のフラグを使用するため、 for waitObject
を使用してもコールバックの相互除外は提供されないため、各コールバックは個別のスレッド プール スレッドでディスパッチされます。
このメソッドによって返される を RegisteredWaitHandle 使用し終わったら、その RegisteredWaitHandle.Unregister メソッドを呼び出して待機ハンドルへの参照を解放します。 に を指定true
executeOnlyOnce
したRegisteredWaitHandle.Unregister場合でも、常に メソッドを呼び出することをお勧めします。 ガベージ コレクションは、登録されている待機ハンドルの RegisteredWaitHandle.Unregister ファイナライザーに応じてではなく、 メソッドを呼び出すと、より効率的に動作します。
こちらもご覧ください
適用対象
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)
ミリ秒単位のタイムアウトとして 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。 Mutex 以外の 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 メソッドを呼び出して待機ハンドルへの参照を解放します。 に を指定true
executeOnlyOnce
したRegisteredWaitHandle.Unregister場合でも、常に メソッドを呼び出することをお勧めします。 ガベージ コレクションは、登録されている待機ハンドルの RegisteredWaitHandle.Unregister ファイナライザーに応じてではなく、 メソッドを呼び出すと、より効率的に動作します。
こちらもご覧ください
適用対象
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)
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。 Mutex 以外の 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 メソッドを呼び出して待機ハンドルへの参照を解放します。 に を指定true
executeOnlyOnce
したRegisteredWaitHandle.Unregister場合でも、常に メソッドを呼び出することをお勧めします。 ガベージ コレクションは、登録されている待機ハンドルの RegisteredWaitHandle.Unregister ファイナライザーに応じてではなく、 メソッドを呼び出すと、より効率的に動作します。
こちらもご覧ください
適用対象
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
重要
この 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。 Mutex 以外の 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 呼び出して待機ハンドルへの参照を解放します。 に を指定true
executeOnlyOnce
した場合でも、常に RegisteredWaitHandle.Unregister メソッドを呼び出することをお勧めします。 登録済みの待機ハンドルのファイナライザーに応じてではなく、 メソッドを RegisteredWaitHandle.Unregister 呼び出すと、ガベージ コレクションがより効率的に機能します。
こちらもご覧ください
適用対象
.NET