Export (0) Print
Expand All

ThreadPool.RegisterWaitForSingleObject Method (WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

Registers a delegate to wait for a WaitHandle, specifying a 32-bit signed integer for the time-out in milliseconds.

Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)

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

Parameters

waitObject

The WaitHandle to register.

callBack

The WaitOrTimerCallback delegate to call when the waitObject parameter is signaled.

state

The object passed to the delegate.

millisecondsTimeOutInterval

The time-out in milliseconds. If the millisecondsTimeOutInterval parameter is zero (0), the function tests the object's state and returns immediately. If millisecondsTimeOutInterval is -1, the function's time-out interval never elapses.

executeOnlyOnce

true to indicate the thread will no longer wait on the waitObject parameter after the delegate has been called; false to indicate the timer is reset every time the wait operation completes until the wait is unregistered.

Return Value

The RegisteredWaitHandle that encapsulates the native handle.

Exception typeCondition

ArgumentOutOfRangeException

The millisecondsTimeOutInterval parameter is less than -1.

The RegisterWaitForSingleObject method queues the specified delegate to the thread pool. A worker thread will execute the delegate when one of the following occurs:

  • The specified object is in the signaled state.

  • The time-out interval elapses.

The RegisterWaitForSingleObject method checks the current state of the specified object's WaitHandle. If the object's state is unsignaled, the method registers a wait operation. The wait operation is performed by a thread from the thread pool. The delegate is executed by a worker thread when the object's state becomes signaled or the time-out interval elapses. If the timeOutInterval parameter is not zero (0) and the executeOnlyOnce parameter is false, the timer is reset every time the event is signaled or the time-out interval elapses.

To cancel the wait operation, call the RegisteredWaitHandle.Unregister method.

The wait thread uses the Win32 WaitForMultipleObjects function to monitor registered wait operations. Therefore, if you must use the same native operating system handle in multiple calls to RegisterWaitForSingleObject, you must duplicate the handle using the Win32 DuplicateHandle function. Note that you should not pulse an event object passed to RegisterWaitForSingleObject, because the wait thread might not detect that the event is signaled before it is reset.

Before returning, the function modifies the state of some types of synchronization objects. Modification occurs only for the object whose signaled state caused the wait condition to be satisfied. For example, the count of a semaphore is decreased by one.

Version Information

In the .NET Framework version 2.0, the Thread.CurrentPrincipal property value is propagated to worker threads queued using the RegisterWaitForSingleObject method. In earlier versions, the principal information is not propagated.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft