IInputChannel.Receive 方法

定义

如果在显式或隐式定义的时间间隔内有可用的消息,则返回输入通道接收的消息。

重载

Receive()

如果有可用消息,则返回接收到的消息。 如果没有可用消息,则在默认的时间间隔内阻塞。

Receive(TimeSpan)

如果有可用消息,则返回接收到的消息。 如果没有可用消息,则在指定的时间间隔内阻塞。

注解

如果当前线程在收到请求消息或超出 Receive 指定的时间间隔之前可以被阻塞,则使用同步 timeout 方法。 如果需要应用程序处理继续进行而不等待接收请求,则使用异步 BeginReceive 方法。

在有无显式超时的情况下,同步 Receive 操作都可用。

如果没有可用的消息,此方法将发生阻塞,直到有可用消息或超时为止。

Receive()

Source:
IInputChannel.cs

如果有可用消息,则返回接收到的消息。 如果没有可用消息,则在默认的时间间隔内阻塞。

public:
 System::ServiceModel::Channels::Message ^ Receive();
public System.ServiceModel.Channels.Message Receive ();
abstract member Receive : unit -> System.ServiceModel.Channels.Message
Public Function Receive () As Message

返回

接收到的 Message

示例

下面的代码演示如何实现此方法:

public Message Receive()
{
    return Receive(DefaultReceiveTimeout);
}

注解

如果当前线程在收到请求消息或超出 Receive 指定的时间间隔之前可以被阻塞,则使用同步 timeout 方法。 如果需要应用程序处理继续进行而不等待接收请求,则使用异步 BeginReceive 方法。

在有无显式超时的情况下,同步 Receive 操作都可用。

如果没有可用的消息,此方法将发生阻塞,直到有可用消息或超时为止。

Receive 可以被多次调用或并发调用。 对于每个接收的消息,只有一次 Receive 调用可以完成。

适用于

Receive(TimeSpan)

Source:
IInputChannel.cs

如果有可用消息,则返回接收到的消息。 如果没有可用消息,则在指定的时间间隔内阻塞。

public:
 System::ServiceModel::Channels::Message ^ Receive(TimeSpan timeout);
public System.ServiceModel.Channels.Message Receive (TimeSpan timeout);
abstract member Receive : TimeSpan -> System.ServiceModel.Channels.Message
Public Function Receive (timeout As TimeSpan) As Message

参数

timeout
TimeSpan

一个 TimeSpan,指定接收操作的完成时限,在此时限之后操作将超时并引发 TimeoutException

返回

接收到的 Message

例外

在操作完成前超出指定的 timeout

指定的超时小于零。

示例

下面的代码演示如何实现此方法:

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

    return message;
}

注解

如果当前线程在收到请求消息或超出 Receive 指定的时间间隔之前可以被阻塞,则使用同步 timeout 方法。 如果需要应用程序处理继续进行而不等待接收请求,则使用异步 BeginReceive 方法。

在有无显式超时的情况下,同步 Receive 操作都可用。

如果没有可用的消息,此方法将发生阻塞,直到有可用消息或超时为止。

Receive 可以被多次调用或并发调用。 对于每个接收的消息,只有一次 Receive 调用可以完成。

适用于