IInputChannel.Receive 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
如果在显式或隐式定义的时间间隔内有可用的消息,则返回输入通道接收的消息。
重载
Receive() |
如果有可用消息,则返回接收到的消息。 如果没有可用消息,则在默认的时间间隔内阻塞。 |
Receive(TimeSpan) |
如果有可用消息,则返回接收到的消息。 如果没有可用消息,则在指定的时间间隔内阻塞。 |
注解
如果当前线程在收到请求消息或超出 Receive 指定的时间间隔之前可以被阻塞,则使用同步 timeout
方法。 如果需要应用程序处理继续进行而不等待接收请求,则使用异步 BeginReceive 方法。
在有无显式超时的情况下,同步 Receive 操作都可用。
如果没有可用的消息,此方法将发生阻塞,直到有可用消息或超时为止。
Receive()
- Source:
- IInputChannel.cs
- 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
- 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 调用可以完成。