IInputChannel.Receive Method (TimeSpan)


Returns the message received, if one is available. If a message is not available, blocks for a specified interval of time.

Namespace:   System.ServiceModel.Channels
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

Message Receive(
	TimeSpan timeout


Type: System.TimeSpan

The TimeSpan that specifies how long the receive operation has to complete before timing out and throwing a TimeoutException.

Return Value

Type: System.ServiceModel.Channels.Message

The Message received.

Exception Condition

The specified timeout is exceeded before the operation is completed.


The timeout specified is less than zero.

Use the synchronous Receive method when it is acceptable for the current thread to be blocked until it receives the request message or exceeds the interval of time specified by timeout. Use the asynchronous BeginReceive method when you want the application processing to continue without waiting for the request to be received.

The synchronous Receive operation is available with or without an explicit timeout.

If a message is not available, it blocks until one is available or until the timeout is exceeded.

Receive can be called multiple times or concurrently. Only one Receive call can complete for each message received.

The following code illustrates how to implement this method:

public Message Receive(TimeSpan timeout)
    Message message;
    while (true)
        message = this.InnerChannel.Receive(timeout);
        if (ProcessReceivedMessage(ref message))

    return message;

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.0
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top