MessageQueue.BeginPeek Method (TimeSpan, Cursor, PeekAction, Object, AsyncCallback)
Initiates an asynchronous peek operation that has a specified time-out and that uses a specified cursor, a specified peek action, and a specified state object. The state object provides associated information throughout the lifetime of the operation. This overload receives notification, through a callback, of the identity of the event handler for the operation. The operation is not complete until either a message becomes available in the queue or the time-out occurs.
Assembly: System.Messaging (in System.Messaging.dll)
public IAsyncResult BeginPeek( TimeSpan timeout, Cursor cursor, PeekAction action, object state, AsyncCallback callback )
A TimeSpan that indicates the interval of time to wait for a message to become available.
A Cursor that maintains a specific position in the message queue.
One of the PeekAction values. Indicates whether to peek at the current message in the queue, or the next message.
A state object, specified by the application, that contains information associated with the asynchronous operation.
A value other than PeekAction.Current or PeekAction.Next was specified for the action parameter.
The cursor parameter is null.
The value specified for the timeout parameter is not valid.
An error occurred when accessing a Message Queuing method.
Available since 2.0
The method is not thread safe.
When you use this overload, the callback specified in the callback parameter is invoked directly when a message becomes available in the queue or when the specified interval of time has expired. The PeekCompleted event is not raised. The other overloads of BeginPeek rely on this component to raise the PeekCompleted event.
PeekCompleted is also raised if a message already exists in the queue.
The BeginPeek method returns immediately, but the asynchronous operation is not completed until the event handler is called.
BeginPeek returns a IAsyncResult that identifies the asynchronous operation started by the method. You can use this IAsyncResult throughout the lifetime of the operation, although you generally do not use it until EndPeek(IAsyncResult) is called. However, if you start several asynchronous operations, you can place their IAsyncResult values in an array and specify whether to wait for all operations or any operation to complete. In this case, use the AsyncWaitHandle property of the IAsyncResult to identify the completed operation.
The state object associates state information with the operation. For example, if you call BeginPeek multiple times to initiate multiple operations, you can identify each operation through a separate state object that you define.
The following table shows whether this method is available in various Workgroup modes.
Local computer and direct format name
Remote computer and direct format name