Early Preview
This is currently very much a preview. Please feel free to try things out,
but don't be upset if anything is not yet working. Feedback is welcome over on our
GitHub Dicussions page.
class System.​Threading.​WaitHandle
Assembly: System.Runtime
Inheritance: object → MarshalByRefObject → WaitHandle
Implemented Interfaces
Encapsulates operating system-specific objects that wait for exclusive access to shared resources.
Fields and Constants
protected static readonly
nint
InvalidHandle
Represents an invalid native operating system handle. This field is read-only.
public const
int
WaitTimeout
Indicates that a <see cref="M:System.Threading.WaitHandle.WaitAny(System.Threading.WaitHandle[],System.Int32,System.Boolean)" /> operation timed out before any of the wait handles were signaled. This field is constant.
Properties
public
nint
Handle
Gets or sets the native operating system handle.
SafeWaitHandle
Gets or sets the native operating system handle.
Methods
public
void
Close​()
Releases all resources held by the current <see cref="T:System.Threading.WaitHandle" /> .
public
void
Dispose​()
Releases all resources used by the current instance of the <see cref="T:System.Threading.WaitHandle" /> class.
protected
void
Dispose​(bool explicitDisposing)
When overridden in a derived class, releases the unmanaged resources used by the <see cref="T:System.Threading.WaitHandle" /> , and optionally releases the managed resources.
explicitDisposing
<see langword="true" /> to release both managed and unmanaged resources; <see langword="false" /> to release only unmanaged resources.
public static
bool
SignalAndWait​(WaitHandle toSignal,
WaitHandle toWaitOn)
Signals one <see cref="T:System.Threading.WaitHandle" /> and waits on another.
Returns <see langword="true" /> if both the signal and the wait complete successfully; if the wait does not complete, the method does not return.
toSignal
The <see cref="T:System.Threading.WaitHandle" /> to signal.
toWaitOn
The <see cref="T:System.Threading.WaitHandle" /> to wait on.
public static
bool
SignalAndWait​(WaitHandle toSignal,
WaitHandle toWaitOn,
int millisecondsTimeout,
bool exitContext)
Signals one <see cref="T:System.Threading.WaitHandle" /> and waits on another, specifying a time-out interval as a 32-bit signed integer and specifying whether to exit the synchronization domain for the context before entering the wait.
Returns <see langword="true" /> if both the signal and the wait completed successfully, or <see langword="false" /> if the signal completed but the wait timed out.
toSignal
The <see cref="T:System.Threading.WaitHandle" /> to signal.
toWaitOn
The <see cref="T:System.Threading.WaitHandle" /> to wait on.
millisecondsTimeout
An integer that represents the interval to wait. If the value is <see cref="F:System.Threading.Timeout.Infinite" /> , that is, -1, the wait is infinite.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public static
bool
SignalAndWait​(WaitHandle toSignal,
WaitHandle toWaitOn,
TimeSpan timeout,
bool exitContext)
Signals one <see cref="T:System.Threading.WaitHandle" /> and waits on another, specifying the time-out interval as a <see cref="T:System.TimeSpan" /> and specifying whether to exit the synchronization domain for the context before entering the wait.
Returns <see langword="true" /> if both the signal and the wait completed successfully, or <see langword="false" /> if the signal completed but the wait timed out.
toSignal
The <see cref="T:System.Threading.WaitHandle" /> to signal.
toWaitOn
The <see cref="T:System.Threading.WaitHandle" /> to wait on.
timeout
A <see cref="T:System.TimeSpan" /> that represents the interval to wait. If the value is -1, the wait is infinite.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public static
bool
WaitAll​(WaitHandle[] waitHandles)
Waits for all the elements in the specified array to receive a signal.
Returns <see langword="true" /> when every element in <paramref name="waitHandles" /> has received a signal; otherwise the method never returns.
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object.
public static
bool
WaitAll​(WaitHandle[] waitHandles,
int millisecondsTimeout)
Waits for all the elements in the specified array to receive a signal, using an <see cref="T:System.Int32" /> value to specify the time interval.
Returns <see langword="true" /> when every element in <paramref name="waitHandles" /> has received a signal; otherwise, <see langword="false" /> .
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object (duplicates).
millisecondsTimeout
The number of milliseconds to wait, or <see cref="F:System.Threading.Timeout.Infinite" /> (-1) to wait indefinitely.
public static
bool
WaitAll​(WaitHandle[] waitHandles,
int millisecondsTimeout,
bool exitContext)
Waits for all the elements in the specified array to receive a signal, using an <see cref="T:System.Int32" /> value to specify the time interval and specifying whether to exit the synchronization domain before the wait.
Returns <see langword="true" /> when every element in <paramref name="waitHandles" /> has received a signal; otherwise, <see langword="false" /> .
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object (duplicates).
millisecondsTimeout
The number of milliseconds to wait, or <see cref="F:System.Threading.Timeout.Infinite" /> (-1) to wait indefinitely.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public static
bool
WaitAll​(WaitHandle[] waitHandles,
TimeSpan timeout)
Waits for all the elements in the specified array to receive a signal, using a <see cref="T:System.TimeSpan" /> value to specify the time interval.
Returns <see langword="true" /> when every element in <paramref name="waitHandles" /> has received a signal; otherwise, <see langword="false" /> .
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object.
timeout
A <see cref="T:System.TimeSpan" /> that represents the number of milliseconds to wait, or a <see cref="T:System.TimeSpan" /> that represents -1 milliseconds, to wait indefinitely.
public static
bool
WaitAll​(WaitHandle[] waitHandles,
TimeSpan timeout,
bool exitContext)
Waits for all the elements in the specified array to receive a signal, using a <see cref="T:System.TimeSpan" /> value to specify the time interval, and specifying whether to exit the synchronization domain before the wait.
Returns <see langword="true" /> when every element in <paramref name="waitHandles" /> has received a signal; otherwise <see langword="false" /> .
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object.
timeout
A <see cref="T:System.TimeSpan" /> that represents the number of milliseconds to wait, or a <see cref="T:System.TimeSpan" /> that represents -1 milliseconds, to wait indefinitely.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public static
int
WaitAny​(WaitHandle[] waitHandles)
Waits for any of the elements in the specified array to receive a signal.
Returns The array index of the object that satisfied the wait.
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait.
public static
int
WaitAny​(WaitHandle[] waitHandles,
int millisecondsTimeout)
Waits for any of the elements in the specified array to receive a signal, using a 32-bit signed integer to specify the time interval.
Returns The array index of the object that satisfied the wait, or <see cref="F:System.Threading.WaitHandle.WaitTimeout" /> if no object satisfied the wait and a time interval equivalent to <paramref name="millisecondsTimeout" /> has passed.
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait.
millisecondsTimeout
The number of milliseconds to wait, or <see cref="F:System.Threading.Timeout.Infinite" /> (-1) to wait indefinitely.
public static
int
WaitAny​(WaitHandle[] waitHandles,
int millisecondsTimeout,
bool exitContext)
Waits for any of the elements in the specified array to receive a signal, using a 32-bit signed integer to specify the time interval, and specifying whether to exit the synchronization domain before the wait.
Returns The array index of the object that satisfied the wait, or <see cref="F:System.Threading.WaitHandle.WaitTimeout" /> if no object satisfied the wait and a time interval equivalent to <paramref name="millisecondsTimeout" /> has passed.
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait.
millisecondsTimeout
The number of milliseconds to wait, or <see cref="F:System.Threading.Timeout.Infinite" /> (-1) to wait indefinitely.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public static
int
WaitAny​(WaitHandle[] waitHandles,
TimeSpan timeout)
Waits for any of the elements in the specified array to receive a signal, using a <see cref="T:System.TimeSpan" /> to specify the time interval.
Returns The array index of the object that satisfied the wait, or <see cref="F:System.Threading.WaitHandle.WaitTimeout" /> if no object satisfied the wait and a time interval equivalent to <paramref name="timeout" /> has passed.
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait.
timeout
A <see cref="T:System.TimeSpan" /> that represents the number of milliseconds to wait, or a <see cref="T:System.TimeSpan" /> that represents -1 milliseconds to wait indefinitely.
public static
int
WaitAny​(WaitHandle[] waitHandles,
TimeSpan timeout,
bool exitContext)
Waits for any of the elements in the specified array to receive a signal, using a <see cref="T:System.TimeSpan" /> to specify the time interval and specifying whether to exit the synchronization domain before the wait.
Returns The array index of the object that satisfied the wait, or <see cref="F:System.Threading.WaitHandle.WaitTimeout" /> if no object satisfied the wait and a time interval equivalent to <paramref name="timeout" /> has passed.
waitHandles
A <see langword="WaitHandle" /> array containing the objects for which the current instance will wait.
timeout
A <see cref="T:System.TimeSpan" /> that represents the number of milliseconds to wait, or a <see cref="T:System.TimeSpan" /> that represents -1 milliseconds to wait indefinitely.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public
bool
WaitOne​()
Blocks the current thread until the current <see cref="T:System.Threading.WaitHandle" /> receives a signal.
Returns <see langword="true" /> if the current instance receives a signal. If the current instance is never signaled, <see cref="M:System.Threading.WaitHandle.WaitOne" /> never returns.
public
bool
WaitOne​(int millisecondsTimeout)
Blocks the current thread until the current <see cref="T:System.Threading.WaitHandle" /> receives a signal, using a 32-bit signed integer to specify the time interval in milliseconds.
Returns <see langword="true" /> if the current instance receives a signal; otherwise, <see langword="false" /> .
millisecondsTimeout
The number of milliseconds to wait, or <see cref="F:System.Threading.Timeout.Infinite" /> (-1) to wait indefinitely.
public
bool
WaitOne​(int millisecondsTimeout,
bool exitContext)
Blocks the current thread until the current <see cref="T:System.Threading.WaitHandle" /> receives a signal, using a 32-bit signed integer to specify the time interval and specifying whether to exit the synchronization domain before the wait.
Returns <see langword="true" /> if the current instance receives a signal; otherwise, <see langword="false" /> .
millisecondsTimeout
The number of milliseconds to wait, or <see cref="F:System.Threading.Timeout.Infinite" /> (-1) to wait indefinitely.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public
bool
WaitOne​(TimeSpan timeout)
Blocks the current thread until the current instance receives a signal, using a <see cref="T:System.TimeSpan" /> to specify the time interval.
Returns <see langword="true" /> if the current instance receives a signal; otherwise, <see langword="false" /> .
timeout
A <see cref="T:System.TimeSpan" /> that represents the number of milliseconds to wait, or a <see cref="T:System.TimeSpan" /> that represents -1 milliseconds to wait indefinitely.
public
bool
WaitOne​(TimeSpan timeout,
bool exitContext)
Blocks the current thread until the current instance receives a signal, using a <see cref="T:System.TimeSpan" /> to specify the time interval and specifying whether to exit the synchronization domain before the wait.
Returns <see langword="true" /> if the current instance receives a signal; otherwise, <see langword="false" /> .
timeout
A <see cref="T:System.TimeSpan" /> that represents the number of milliseconds to wait, or a <see cref="T:System.TimeSpan" /> that represents -1 milliseconds to wait indefinitely.
exitContext
<see langword="true" /> to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it afterward; otherwise, <see langword="false" /> .
public
object
GetLifetimeService​()
Inherited from MarshalByRefObject
Retrieves the current lifetime service object that controls the lifetime policy for this instance.
Returns An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease" /> used to control the lifetime policy for this instance.
public
object
InitializeLifetimeService​()
Inherited from MarshalByRefObject
Obtains a lifetime service object to control the lifetime policy for this instance.
Returns An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease" /> used to control the lifetime policy for this instance. This is the current lifetime service object for this instance if one exists; otherwise, a new lifetime service object initialized to the value of the <see cref="P:System.Runtime.Remoting.Lifetime.LifetimeServices.LeaseManagerPollTime" /> property.
protected
MarshalByRefObject
MemberwiseClone​(bool cloneIdentity)
Inherited from MarshalByRefObject
Creates a shallow copy of the current <see cref="T:System.MarshalByRefObject" /> object.
Returns A shallow copy of the current <see cref="T:System.MarshalByRefObject" /> object.
cloneIdentity
<see langword="false" /> to delete the current <see cref="T:System.MarshalByRefObject" /> object's identity, which will cause the object to be assigned a new identity when it is marshaled across a remoting boundary. A value of <see langword="false" /> is usually appropriate. <see langword="true" /> to copy the current <see cref="T:System.MarshalByRefObject" /> object's identity to its clone, which will cause remoting client calls to be routed to the remote server object.
public
bool
Equals​(object obj)
Inherited from object
Determines whether the specified object is equal to the current object.
Returns <see langword="true" /> if the specified object is equal to the current object; otherwise, <see langword="false" /> .
obj
The object to compare with the current object.
protected
void
Finalize​()
Inherited from object
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
public
int
GetHashCode​()
Inherited from object
Serves as the default hash function.
Returns A hash code for the current object.
public
Type
GetType​()
Inherited from object
Gets the <see cref="T:System.Type" /> of the current instance.
Returns The exact runtime type of the current instance.
protected
object
MemberwiseClone​()
Inherited from object
Creates a shallow copy of the current <see cref="T:System.Object" /> .
Returns A shallow copy of the current <see cref="T:System.Object" /> .
public
string
ToString​()
Inherited from object
Returns a string that represents the current object.
Returns A string that represents the current object.