ThreadPool.RegisterWaitForSingleObject メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ThreadPool.RegisterWaitForSingleObject メソッドの意味・解説 

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

ミリ秒単位タイムアウトとして 32 ビット符号なし整数指定してWaitHandle待機するデリゲート登録します

このメソッドは、CLS準拠していません。  

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<CLSCompliantAttribute(False)> _
Public Shared Function RegisterWaitForSingleObject
 ( _
    waitObject As WaitHandle, _
    callBack As WaitOrTimerCallback, _
    state As Object, _
    millisecondsTimeOutInterval As UInteger, _
    executeOnlyOnce As Boolean _
) As RegisteredWaitHandle
Dim waitObject As WaitHandle
Dim callBack As WaitOrTimerCallback
Dim state As Object
Dim millisecondsTimeOutInterval As UInteger
Dim executeOnlyOnce As Boolean
Dim returnValue As RegisteredWaitHandle

returnValue = ThreadPool.RegisterWaitForSingleObject(waitObject, callBack, state,
 millisecondsTimeOutInterval, executeOnlyOnce)
[CLSCompliantAttribute(false)] 
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject,
    WaitOrTimerCallback callBack,
    Object state,
    uint millisecondsTimeOutInterval,
    bool executeOnlyOnce
)
[CLSCompliantAttribute(false)] 
public:
static RegisteredWaitHandle^ RegisterWaitForSingleObject (
    WaitHandle^ waitObject, 
    WaitOrTimerCallback^ callBack, 
    Object^ state, 
    unsigned int millisecondsTimeOutInterval, 
    bool executeOnlyOnce
)
/** @attribute CLSCompliantAttribute(false) */ 
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject, 
    WaitOrTimerCallback callBack, 
    Object state, 
    UInt32 millisecondsTimeOutInterval, 
    boolean executeOnlyOnce
)
CLSCompliantAttribute(false) 
public static function RegisterWaitForSingleObject
 (
    waitObject : WaitHandle, 
    callBack : WaitOrTimerCallback, 
    state : Object, 
    millisecondsTimeOutInterval : uint, 
    executeOnlyOnce : boolean
) : RegisteredWaitHandle

パラメータ

waitObject

登録する WaitHandle。

callBack

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

state

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

millisecondsTimeOutInterval

ミリ秒単位タイムアウトmillisecondsTimeOutInterval パラメータが 0 の場合関数オブジェクトの状態をテストして、すぐに返しますmillisecondsTimeOutInterval が -1 の場合関数タイムアウト間隔経過することはありません。

executeOnlyOnce

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

戻り値
登録され待機操作キャンセルするために使用できる RegisteredWaitHandle。

例外例外
例外種類条件

ArgumentOutOfRangeException

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

解説解説

RegisterWaitForSingleObject メソッドは、指定したデリゲートスレッド プールキュー置きます次のいずれか発生すると、ワーカー スレッドデリゲート実行します

RegisterWaitForSingleObject メソッドは、指定したオブジェクトWaitHandle現在の状態チェックしますオブジェクトの状態が非シグナル状態である場合、このメソッド待機操作登録します待機操作は、スレッド プールスレッドによって実行されます。オブジェクトの状態がシグナル状態になると、またはタイムアウト間隔経過すると、デリゲートワーカー スレッドによって実行されます。timeOutInterval パラメータが 0 以外で、executeOnlyOnce パラメータfalse である場合は、イベントシグナル状態になるたびに、またはタイムアウト間隔経過するたびにタイマリセットされます。

待機操作キャンセルするには、RegisteredWaitHandle.Unregister メソッド呼び出します。

待機スレッドは、Win32WaitForMultipleObjects 関数使用して登録され待機操作監視します。このためRegisterWaitForSingleObject複数呼び出すときに同じネイティブ オペレーティング システム ハンドル使用する必要がある場合は、Win32 DuplicateHandle 関数使用してハンドル複製する必要がありますRegisterWaitForSingleObject渡されイベント オブジェクトパルスを送ることはできません。これは、待機スレッドリセットされるまでイベントシグナル状態であることを検出できないためです。

この関数は、戻る前に同期オブジェクトいくつかの型の状態を変更します変更は、シグナル状態によって待機条件満たされオブジェクトに対してだけ発生します。たとえば、セマフォの数が 1 つ減らされます。

バージョン情報
使用例使用例
Imports System
Imports System.Threading

' TaskInfo contains data that will be passed to the callback
' method.
Public Class TaskInfo
    public Handle As RegisteredWaitHandle =
 Nothing
    public OtherInfo As String
 = "default"
End Class

Public Class Example

    <MTAThread> _
    Public Shared Sub Main()
        ' The main thread uses AutoResetEvent to signal the
        ' registered wait handle, which executes the callback
        ' method.
        Dim ev As New AutoResetEvent(false)

        Dim ti As New TaskInfo()
        ti.OtherInfo = "First task"
        ' The TaskInfo for the task includes the registered wait
        ' handle returned by RegisterWaitForSingleObject.  This
        ' allows the wait to be terminated when the object has
        ' been signaled once (see WaitProc).
        ti.Handle = ThreadPool.RegisterWaitForSingleObject( _
            ev, _
            New WaitOrTimerCallback(AddressOf
 WaitProc), _
            ti, _
            1000, _
            false _
        )

        ' The main thread waits about three seconds, to demonstrate
 
        ' the time-outs on the queued task, and then signals.
        Thread.Sleep(3100)
        Console.WriteLine("Main thread signals.")
        ev.Set()

        ' The main thread sleeps, which should give the callback
        ' method time to execute.  If you comment out this line, the
        ' program usually ends before the ThreadPool thread can execute.
        Thread.Sleep(1000)
        ' If you start a thread yourself, you can wait for it to end
        ' by calling Thread.Join.  This option is not available with
 
        ' thread pool threads.
    End Sub
   
    ' The callback method executes when the registered wait times out
,
    ' or when the WaitHandle (in this case AutoResetEvent) is signaled.
    ' WaitProc unregisters the WaitHandle the first time the event is
 
    ' signaled.
    Public Shared Sub WaitProc(state
 As Object, timedOut As
 Boolean)
        ' The state object must be cast to the correct type, because
 the
        ' signature of the WaitOrTimerCallback delegate specifies type
        ' Object.
        Dim ti As TaskInfo = CType(state, TaskInfo)

        Dim cause As String
 = "TIMED OUT"
        If Not timedOut Then
            cause = "SIGNALED"
            ' If the callback method executes because the WaitHandle
 is
            ' signaled, stop future execution of the callback method
            ' by unregistering the WaitHandle.
            If Not ti.Handle Is
 Nothing Then
                ti.Handle.Unregister(Nothing)
            End If
        End If 

        Console.WriteLine("WaitProc( {0} ) executes on thread
 {1}; cause = {2}.", _
            ti.OtherInfo, _
            Thread.CurrentThread.GetHashCode().ToString(), _
            cause _
        )
    End Sub
End Class
using System;
using System.Threading;

// TaskInfo contains data that will be passed to the callback
// method.
public class TaskInfo {
    public RegisteredWaitHandle Handle = null;
    public string OtherInfo = "default";
}

public class Example {
    public static void Main(string[]
 args) {
        // The main thread uses AutoResetEvent to signal the
        // registered wait handle, which executes the callback
        // method.
        AutoResetEvent ev = new AutoResetEvent(false);

        TaskInfo ti = new TaskInfo();
        ti.OtherInfo = "First task";
        // The TaskInfo for the task includes the registered wait
        // handle returned by RegisterWaitForSingleObject.  This
        // allows the wait to be terminated when the object has
        // been signaled once (see WaitProc).
        ti.Handle = ThreadPool.RegisterWaitForSingleObject(
            ev,
            new WaitOrTimerCallback(WaitProc),
            ti,
            1000,
            false
        );

        // The main thread waits three seconds, to demonstrate the
        // time-outs on the queued thread, and then signals.
        Thread.Sleep(3100);
        Console.WriteLine("Main thread signals.");
        ev.Set();

        // The main thread sleeps, which should give the callback
        // method time to execute.  If you comment out this line, the
        // program usually ends before the ThreadPool thread can execute.
        Thread.Sleep(1000);
        // If you start a thread yourself, you can wait for it to end
        // by calling Thread.Join.  This option is not available with
 
        // thread pool threads.
    }
   
    // The callback method executes when the registered wait times out
,
    // or when the WaitHandle (in this case AutoResetEvent) is signaled.
    // WaitProc unregisters the WaitHandle the first time the event
 is 
    // signaled.
    public static void WaitProc(object
 state, bool timedOut) {
        // The state object must be cast to the correct type, because
 the
        // signature of the WaitOrTimerCallback delegate specifies type
        // Object.
        TaskInfo ti = (TaskInfo) state;

        string cause = "TIMED OUT";
        if (!timedOut) {
            cause = "SIGNALED";
            // If the callback method executes because the WaitHandle
 is
            // signaled, stop future execution of the callback method
            // by unregistering the WaitHandle.
            if (ti.Handle != null)
                ti.Handle.Unregister(null);
        } 

        Console.WriteLine("WaitProc( {0} ) executes on thread {1}; cause = {2}."
,
            ti.OtherInfo, 
            Thread.CurrentThread.GetHashCode().ToString(), 
            cause
        );
    }
}
using namespace System;
using namespace System::Threading;

// TaskInfo contains data that will be passed to the callback
// method.
public ref class TaskInfo
{
public:
   TaskInfo()
   {
      Handle = nullptr;
      OtherInfo = "default";
   }

   RegisteredWaitHandle^ Handle;
   String^ OtherInfo;
};

ref class Example
{
public:

   // The callback method executes when the registered wait times out
,
   // or when the WaitHandle (in this case AutoResetEvent) is signaled.
   // WaitProc unregisters the WaitHandle the first time the event is
 
   // signaled.
   static void WaitProc( Object^ state, bool
 timedOut )
   {
      
      // The state Object must be cast to the correct type, because
 the
      // signature of the WaitOrTimerCallback delegate specifies type
      // Object.
      TaskInfo^ ti = static_cast<TaskInfo^>(state);
      String^ cause = "TIMED OUT";
      if (  !timedOut )
      {
         cause = "SIGNALED";
         
         // If the callback method executes because the WaitHandle is
         // signaled, stop future execution of the callback method
         // by unregistering the WaitHandle.
         if ( ti->Handle != nullptr )
                  ti->Handle->Unregister( nullptr );
      }

      Console::WriteLine( "WaitProc( {0}) executes on thread {1}; cause = {2}.",
 ti->OtherInfo, Thread::CurrentThread->GetHashCode(), cause );
   }

};

int main()
{
   
   // The main thread uses AutoResetEvent to signal the
   // registered wait handle, which executes the callback
   // method.
   AutoResetEvent^ ev = gcnew AutoResetEvent( false );
   TaskInfo^ ti = gcnew TaskInfo;
   ti->OtherInfo = "First task";
   
   // The TaskInfo for the task includes the registered wait
   // handle returned by RegisterWaitForSingleObject.  This
   // allows the wait to be terminated when the object has
   // been signaled once (see WaitProc).
   ti->Handle = ThreadPool::RegisterWaitForSingleObject( ev, gcnew WaitOrTimerCallback(
 Example::WaitProc ), ti, 1000, false );
   
   // The main thread waits three seconds, to demonstrate the
   // time-outs on the queued thread, and then signals.
   Thread::Sleep( 3100 );
   Console::WriteLine( "Main thread signals." );
   ev->Set();
   
   // The main thread sleeps, which should give the callback
   // method time to execute.  If you comment out this line, the
   // program usually ends before the ThreadPool thread can execute.
   Thread::Sleep( 1000 );
   
   // If you start a thread yourself, you can wait for it to end
   // by calling Thread::Join.  This option is not available with 
   // thread pool threads.
   return 0;
}

import System.*;
import System.Threading.*;
import System.Threading.Thread;

// TaskInfo contains data that will be passed to the callback
// method.
public class TaskInfo
{
    public RegisteredWaitHandle handle = null;
    public String otherInfo = "default";
} //TaskInfo

public class Example
{
    public static void main(String[]
 args)
    {
        // The main thread uses AutoResetEvent to signal the
        // registered wait Handle, which executes the callback
        // method.
        AutoResetEvent ev = new AutoResetEvent(false);
        TaskInfo ti = new TaskInfo();

        ti.otherInfo = "First task";

        // The TaskInfo for the task includes the registered wait
        // Handle returned by RegisterWaitForSingleObject.  This
        // allows the wait to be terminated when the object has
        // been signaled once (see WaitProc).
        ti.handle = ThreadPool.RegisterWaitForSingleObject(ev, 
            new WaitOrTimerCallback(WaitProc), ti, 1000, false);

        // The main thread waits three seconds, to demonstrate the
        // time-outs on the queued thread, and then signals.
        Thread.Sleep(3100);
        Console.WriteLine("Main thread signals.");
        ev.Set();

        // The main thread sleeps, which should give the callback
        // method time to execute.  If you comment out this line, the
        // program usually ends before the ThreadPool thread can execute.
        Thread.Sleep(1000);
        // If you start a thread yourself, you can wait for it to end
        // by calling Thread.Join.  This option is not available with
 
        // thread pool threads.
    } //main

    // The callback method executes when the registered wait times out
,
    // or when the WaitHandle (in this case AutoResetEvent) is signaled.
    // WaitProc unregisters the WaitHandle the first time the event
 is 
    // signaled.
    public static void WaitProc(Object
 state, boolean timedOut)
    {
        // The state object must be cast to the correct type, because
 the
        // signature of the WaitOrTimerCallback delegate specifies type
        // Object.
        TaskInfo ti = ((TaskInfo)(state));
        String cause = "TIMED OUT";

        if (!(timedOut)) {
            cause = "SIGNALED";

            // If the callback method executes because the WaitHandle
 is
            // signaled, stop future execution of the callback method
            // by unregistering the WaitHandle.
            if (ti.handle != null) {
                ti.handle.Unregister(null);
            }
        }

        Console.WriteLine("WaitProc( {0} ) executes " 
            + "on thread {1}; cause = {2}.",
            ti.otherInfo, 
            String.valueOf(Thread.get_CurrentThread().GetHashCode()),cause);
    } //WaitProc
} //Example
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadPool.RegisterWaitForSingleObject メソッド (WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)

ミリ秒単位タイムアウトとして 64 ビット符号付き整数指定してWaitHandle待機するデリゲート登録します

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Shared Function RegisterWaitForSingleObject
 ( _
    waitObject As WaitHandle, _
    callBack As WaitOrTimerCallback, _
    state As Object, _
    millisecondsTimeOutInterval As Long, _
    executeOnlyOnce As Boolean _
) As RegisteredWaitHandle
Dim waitObject As WaitHandle
Dim callBack As WaitOrTimerCallback
Dim state As Object
Dim millisecondsTimeOutInterval As Long
Dim executeOnlyOnce As Boolean
Dim returnValue As RegisteredWaitHandle

returnValue = ThreadPool.RegisterWaitForSingleObject(waitObject, callBack, state,
 millisecondsTimeOutInterval, executeOnlyOnce)
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject,
    WaitOrTimerCallback callBack,
    Object state,
    long millisecondsTimeOutInterval,
    bool executeOnlyOnce
)
public:
static RegisteredWaitHandle^ RegisterWaitForSingleObject (
    WaitHandle^ waitObject, 
    WaitOrTimerCallback^ callBack, 
    Object^ state, 
    long long millisecondsTimeOutInterval, 
    bool executeOnlyOnce
)
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject, 
    WaitOrTimerCallback callBack, 
    Object state, 
    long millisecondsTimeOutInterval, 
    boolean executeOnlyOnce
)
public static function RegisterWaitForSingleObject
 (
    waitObject : WaitHandle, 
    callBack : WaitOrTimerCallback, 
    state : Object, 
    millisecondsTimeOutInterval : long, 
    executeOnlyOnce : boolean
) : RegisteredWaitHandle

パラメータ

waitObject

登録する WaitHandle。

callBack

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

state

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

millisecondsTimeOutInterval

ミリ秒単位タイムアウトmillisecondsTimeOutInterval パラメータが 0 の場合関数オブジェクトの状態をテストして、すぐに返しますmillisecondsTimeOutInterval が -1 の場合関数タイムアウト間隔経過することはありません。

executeOnlyOnce

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

戻り値
ネイティブ ハンドルカプセル化する RegisteredWaitHandle。

例外例外
例外種類条件

ArgumentOutOfRangeException

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

解説解説

RegisterWaitForSingleObject メソッドは、指定したデリゲートスレッド プールキュー置きます次のいずれか発生すると、ワーカー スレッドデリゲート実行します

RegisterWaitForSingleObject メソッドは、指定したオブジェクトWaitHandle現在の状態チェックしますオブジェクトの状態が非シグナル状態である場合、このメソッド待機操作登録します待機操作は、スレッド プールスレッドによって実行されます。オブジェクトの状態がシグナル状態になると、またはタイムアウト間隔経過すると、デリゲートワーカー スレッドによって実行されます。timeOutInterval パラメータが 0 以外で、executeOnlyOnce パラメータfalse である場合は、イベントシグナル状態になるたびに、またはタイムアウト間隔経過するたびにタイマリセットされます。

待機操作キャンセルするには、RegisteredWaitHandle.Unregister メソッド呼び出します。

待機スレッドは、Win32WaitForMultipleObjects 関数使用して登録され待機操作監視します。このためRegisterWaitForSingleObject複数呼び出すときに同じネイティブ オペレーティング システム ハンドル使用する必要がある場合は、Win32 DuplicateHandle 関数使用してハンドル複製する必要がありますRegisterWaitForSingleObject渡されイベント オブジェクトパルスを送ることはできません。これは、待機スレッドリセットされるまでイベントシグナル状態であることを検出できないためです。

この関数は、戻る前に同期オブジェクトいくつかの型の状態を変更します変更は、シグナル状態によって待機条件満たされオブジェクトに対してだけ発生します。たとえば、セマフォの数が 1 つ減らされます。

バージョン情報
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadPool.RegisterWaitForSingleObject メソッド (WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)

タイムアウトとして TimeSpan 値を指定してWaitHandle待機するデリゲート登録します

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Shared Function RegisterWaitForSingleObject
 ( _
    waitObject As WaitHandle, _
    callBack As WaitOrTimerCallback, _
    state As Object, _
    timeout As TimeSpan, _
    executeOnlyOnce As Boolean _
) As RegisteredWaitHandle
Dim waitObject As WaitHandle
Dim callBack As WaitOrTimerCallback
Dim state As Object
Dim timeout As TimeSpan
Dim executeOnlyOnce As Boolean
Dim returnValue As RegisteredWaitHandle

returnValue = ThreadPool.RegisterWaitForSingleObject(waitObject, callBack, state,
 timeout, executeOnlyOnce)
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject,
    WaitOrTimerCallback callBack,
    Object state,
    TimeSpan timeout,
    bool executeOnlyOnce
)
public:
static RegisteredWaitHandle^ RegisterWaitForSingleObject (
    WaitHandle^ waitObject, 
    WaitOrTimerCallback^ callBack, 
    Object^ state, 
    TimeSpan timeout, 
    bool executeOnlyOnce
)
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject, 
    WaitOrTimerCallback callBack, 
    Object state, 
    TimeSpan timeout, 
    boolean executeOnlyOnce
)
public static function RegisterWaitForSingleObject
 (
    waitObject : WaitHandle, 
    callBack : WaitOrTimerCallback, 
    state : Object, 
    timeout : TimeSpan, 
    executeOnlyOnce : boolean
) : RegisteredWaitHandle

パラメータ

waitObject

登録する WaitHandle。

callBack

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

state

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

timeout

TimeSpan で表されるタイムアウトtimeout が 0 の場合関数オブジェクトの状態をテストしてすぐに返しますtimeout が -1 の場合関数タイムアウト間隔経過することはありません。

executeOnlyOnce

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

戻り値
ネイティブ ハンドルカプセル化する RegisteredWaitHandle。

例外例外
例外種類条件

ArgumentOutOfRangeException

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

NotSupportedException

timeout パラメータが Int32.MaxValue より大きい値です。

解説解説

RegisterWaitForSingleObject メソッドは、指定したデリゲートスレッド プールキュー置きます次のいずれか発生すると、ワーカー スレッドデリゲート実行します

RegisterWaitForSingleObject メソッドは、指定したオブジェクトWaitHandle現在の状態チェックしますオブジェクトの状態が非シグナル状態である場合、このメソッド待機操作登録します待機操作は、スレッド プールスレッドによって実行されます。オブジェクトの状態がシグナル状態になると、またはタイムアウト間隔経過すると、デリゲートワーカー スレッドによって実行されます。timeOutInterval パラメータが 0 以外で、executeOnlyOnce パラメータfalse である場合は、イベントシグナル状態になるたびに、またはタイムアウト間隔経過するたびにタイマリセットされます。

待機操作キャンセルするには、RegisteredWaitHandle.Unregister メソッド呼び出します。

待機スレッドは、Win32WaitForMultipleObjects 関数使用して登録され待機操作監視します。このためRegisterWaitForSingleObject複数呼び出すときに同じネイティブ オペレーティング システム ハンドル使用する必要がある場合は、Win32 DuplicateHandle 関数使用してハンドル複製する必要がありますRegisterWaitForSingleObject渡されイベント オブジェクトパルスを送ることはできません。これは、待機スレッドリセットされるまでイベントシグナル状態であることを検出できないためです。

この関数は、戻る前に同期オブジェクトいくつかの型の状態を変更します変更は、シグナル状態によって待機条件満たされオブジェクトに対してだけ発生します。たとえば、セマフォの数が 1 つ減らされます。

バージョン情報
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadPool.RegisterWaitForSingleObject メソッド

WaitHandle を待機しているデリゲート登録します
オーバーロードの一覧オーバーロードの一覧

名前 説明
ThreadPool.RegisterWaitForSingleObject (WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) ミリ秒単位タイムアウトとして 32 ビット符号付き整数指定してWaitHandle待機するデリゲート登録します
ThreadPool.RegisterWaitForSingleObject (WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) ミリ秒単位タイムアウトとして 64 ビット符号付き整数指定してWaitHandle待機するデリゲート登録します
ThreadPool.RegisterWaitForSingleObject (WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) タイムアウトとして TimeSpan 値を指定してWaitHandle待機するデリゲート登録します
ThreadPool.RegisterWaitForSingleObject (WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) ミリ秒単位タイムアウトとして 32 ビット符号なし整数指定してWaitHandle待機するデリゲート登録します
参照参照

関連項目

ThreadPool クラス
ThreadPool メンバ
System.Threading 名前空間

その他の技術情報

マネージ スレッド プール

ThreadPool.RegisterWaitForSingleObject メソッド (WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

ミリ秒単位タイムアウトとして 32 ビット符号付き整数指定してWaitHandle待機するデリゲート登録します

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Shared Function RegisterWaitForSingleObject
 ( _
    waitObject As WaitHandle, _
    callBack As WaitOrTimerCallback, _
    state As Object, _
    millisecondsTimeOutInterval As Integer,
 _
    executeOnlyOnce As Boolean _
) As RegisteredWaitHandle
Dim waitObject As WaitHandle
Dim callBack As WaitOrTimerCallback
Dim state As Object
Dim millisecondsTimeOutInterval As Integer
Dim executeOnlyOnce As Boolean
Dim returnValue As RegisteredWaitHandle

returnValue = ThreadPool.RegisterWaitForSingleObject(waitObject, callBack, state,
 millisecondsTimeOutInterval, executeOnlyOnce)
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject,
    WaitOrTimerCallback callBack,
    Object state,
    int millisecondsTimeOutInterval,
    bool executeOnlyOnce
)
public:
static RegisteredWaitHandle^ RegisterWaitForSingleObject (
    WaitHandle^ waitObject, 
    WaitOrTimerCallback^ callBack, 
    Object^ state, 
    int millisecondsTimeOutInterval, 
    bool executeOnlyOnce
)
public static RegisteredWaitHandle RegisterWaitForSingleObject
 (
    WaitHandle waitObject, 
    WaitOrTimerCallback callBack, 
    Object state, 
    int millisecondsTimeOutInterval, 
    boolean executeOnlyOnce
)
public static function RegisterWaitForSingleObject
 (
    waitObject : WaitHandle, 
    callBack : WaitOrTimerCallback, 
    state : Object, 
    millisecondsTimeOutInterval : int, 
    executeOnlyOnce : boolean
) : RegisteredWaitHandle

パラメータ

waitObject

登録する WaitHandle。

callBack

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

state

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

millisecondsTimeOutInterval

ミリ秒単位タイムアウトmillisecondsTimeOutInterval パラメータが 0 の場合関数オブジェクトの状態をテストして、すぐに返しますmillisecondsTimeOutInterval が -1 の場合関数タイムアウト間隔経過することはありません。

executeOnlyOnce

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

戻り値
ネイティブ ハンドルカプセル化する RegisteredWaitHandle。

例外例外
例外種類条件

ArgumentOutOfRangeException

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

解説解説

RegisterWaitForSingleObject メソッドは、指定したデリゲートスレッド プールキュー置きます次のいずれか発生すると、ワーカー スレッドデリゲート実行します

RegisterWaitForSingleObject メソッドは、指定したオブジェクトWaitHandle現在の状態チェックしますオブジェクトの状態が非シグナル状態である場合、このメソッド待機操作登録します待機操作は、スレッド プールスレッドによって実行されます。オブジェクトの状態がシグナル状態になると、またはタイムアウト間隔経過すると、デリゲートワーカー スレッドによって実行されます。timeOutInterval パラメータが 0 以外で、executeOnlyOnce パラメータfalse である場合は、イベントシグナル状態になるたびに、またはタイムアウト間隔経過するたびにタイマリセットされます。

待機操作キャンセルするには、RegisteredWaitHandle.Unregister メソッド呼び出します。

待機スレッドは、Win32WaitForMultipleObjects 関数使用して登録され待機操作監視します。このためRegisterWaitForSingleObject複数呼び出すときに同じネイティブ オペレーティング システム ハンドル使用する必要がある場合は、Win32 DuplicateHandle 関数使用してハンドル複製する必要がありますRegisterWaitForSingleObject渡されイベント オブジェクトパルスを送ることはできません。これは、待機スレッドリセットされるまでイベントシグナル状態であることを検出できないためです。

この関数は、戻る前に同期オブジェクトいくつかの型の状態を変更します変更は、シグナル状態によって待機条件満たされオブジェクトに対してだけ発生します。たとえば、セマフォの数が 1 つ減らされます。

バージョン情報
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ThreadPool.RegisterWaitForSingleObject メソッド」の関連用語

ThreadPool.RegisterWaitForSingleObject メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ThreadPool.RegisterWaitForSingleObject メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS