IInputChannel.TryReceive(TimeSpan, Message) 方法

定义

尝试在指定的时间间隔内接收消息。

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

message
Message

接收到的 Message

返回

Boolean

如果在超出 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,否则将丢失错误信息。

适用于