IInputChannel.TryReceive(TimeSpan, Message) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试在指定的时间间隔内接收消息。
public:
bool TryReceive(TimeSpan timeout, [Runtime::InteropServices::Out] System::ServiceModel::Channels::Message ^ % message);
public bool TryReceive (TimeSpan timeout, out System.ServiceModel.Channels.Message message);
abstract member TryReceive : TimeSpan * Message -> bool
Public Function TryReceive (timeout As TimeSpan, ByRef message As Message) As Boolean
参数
- timeout
- TimeSpan
通过调用 IAsyncResult 方法之一返回的 BeginReceive。
返回
如果在超出 timeout
之前接收到消息,则为 true
;否则为 false
。
例外
在操作完成前超出指定的 timeout
。
指定的超时小于零。
示例
下面的代码演示如何实现此方法:
public bool TryReceive(TimeSpan timeout, out Message message)
{
bool result;
while (true)
{
result = this.InnerChannel.TryReceive(timeout, out message);
if (ProcessReceivedMessage(ref message))
{
break;
}
}
return result;
}
注解
如果您打算处理超时而不仅仅是重新引发或包装 TimeoutException,则应该调用 TryReceive(TimeSpan, Message) 而不是 Receive。
如果您不打算专门处理超时,则仅调用 Receive,否则将丢失错误信息。