次の方法で共有


ThreadPool.UnsafeRegisterWaitForSingleObject メソッド (WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

指定したデリゲートをスレッド プールのキューに置きます。

このメソッドは、CLS と互換性がありません。CLS との互換性に関する詳細については 「共通言語仕様の概要」 を参照してください。

<CLSCompliant(False)>
Overloads Public Shared Function UnsafeRegisterWaitForSingleObject( _   _   ByVal waitObject As WaitHandle, _   ByVal callBack As WaitOrTimerCallback, _   ByVal state As Object, _   ByVal millisecondsTimeOutInterval As UInt32, _   ByVal executeOnlyOnce As Boolean _) As RegisteredWaitHandle
[C#]
[CLSCompliant(false)]
public static RegisteredWaitHandle UnsafeRegisterWaitForSingleObject(WaitHandlewaitObject,WaitOrTimerCallbackcallBack,objectstate,uintmillisecondsTimeOutInterval,boolexecuteOnlyOnce);
[C++]
[CLSCompliant(false)]
public: static RegisteredWaitHandle* UnsafeRegisterWaitForSingleObject(WaitHandle* waitObject,WaitOrTimerCallback* callBack,Object* state,unsigned intmillisecondsTimeOutInterval,boolexecuteOnlyOnce);
[JScript]
public
   CLSCompliant(false)
static function UnsafeRegisterWaitForSingleObject(waitObject : WaitHandle,callBack : WaitOrTimerCallback,state : Object,millisecondsTimeOutInterval : UInt32,executeOnlyOnce : Boolean) : RegisteredWaitHandle;

パラメータ

  • waitObject
    登録する WaitHandle
  • callBack
    waitObject パラメータが通知されたときに呼び出すデリゲート。
  • state
    デリゲートに渡されたオブジェクト。
  • millisecondsTimeOutInterval
    ミリ秒単位のタイムアウト。 millisecondsTimeOutInterval パラメータが 0 の場合、関数はオブジェクトの状態をテストして、すぐに返します。 millisecondsTimeOutInterval が -1 の場合、関数のタイムアウト間隔が経過することはありません。
  • executeOnlyOnce
    デリゲートの呼び出し後、スレッドが waitObject パラメータを待機しなくなる場合は true 。待機が登録解除されるまでは、待機操作が完了するたびにタイマをリセットする場合は false

戻り値

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

例外

例外の種類 条件
SecurityException 呼び出し元に、必要なアクセス許可がありません。

解説

このバージョンの RegisterWaitForSingleObject は、コール スタックをワーカー スレッドに反映しません。これにより、コードはコール スタックを失ってもかまわないようになり、その結果、セキュリティ特権が向上します。

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

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

ThreadPool クラス | ThreadPool メンバ | System.Threading 名前空間 | ThreadPool.UnsafeRegisterWaitForSingleObject オーバーロードの一覧 | スレッド プーリング