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 メソッドの 1 つを呼び出すと返されるBeginReceive

message
Message

受信した Message

返品

true timeoutを超える前にメッセージを受信した場合は ゚。それ以外の場合はfalse

例外

指定した timeout を超えると、操作が完了します。

指定されたタイムアウトが 0 未満です。

次のコードは、このメソッドを実装する方法を示しています。

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を呼び出すだけです。そうしないと、エラー情報が失われます。

適用対象