IInputChannel.Receive メソッド

定義

入力チャネルが受信したメッセージを、明示的または暗黙的に定義された時間間隔で使用できる場合に返します。

オーバーロード

名前 説明
Receive()

受信したメッセージ (使用可能な場合) を返します。 メッセージが使用できない場合は、既定の時間間隔でブロックします。

Receive(TimeSpan)

受信したメッセージ (使用可能な場合) を返します。 メッセージが使用できない場合は、指定した期間ブロックします。

注釈

現在のスレッドが要求メッセージを受信するか、timeoutで指定された時間間隔を超えるまでブロックできる場合は、同期Receive メソッドを使用します。 要求の受信を待たずにアプリケーション処理を続行する必要がある場合は、非同期 BeginReceive メソッドを使用します。

同期 Receive 操作は、明示的なタイムアウトの有無にかかわらず使用できます。

メッセージが使用できない場合は、メッセージが使用可能になるまで、またはタイムアウトを超えるまでブロックされます。

Receive()

受信したメッセージ (使用可能な場合) を返します。 メッセージが使用できない場合は、既定の時間間隔でブロックします。

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);
}

注釈

現在のスレッドが要求メッセージを受信するか、timeoutで指定された時間間隔を超えるまでブロックできる場合は、同期Receive メソッドを使用します。 要求の受信を待たずにアプリケーション処理を続行する場合は、非同期 BeginReceive メソッドを使用します。

同期 Receive 操作は、明示的なタイムアウトの有無にかかわらず使用できます。

メッセージが使用できない場合は、メッセージが使用可能になるまで、またはタイムアウトを超えるまでブロックされます。

Receive は、複数回または同時に呼び出すことができます。 受信したメッセージごとに完了できる Receive 呼び出しは 1 つだけです。

適用対象

Receive(TimeSpan)

受信したメッセージ (使用可能な場合) を返します。 メッセージが使用できない場合は、指定した期間ブロックします。

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

タイムアウトしてTimeoutExceptionをスローするまでに受信操作を完了する必要がある時間を指定するTimeSpan

返品

受信した Message

例外

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

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

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

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

    return message;
}

注釈

現在のスレッドが要求メッセージを受信するか、timeoutで指定された時間間隔を超えるまでブロックできる場合は、同期Receive メソッドを使用します。 要求の受信を待たずにアプリケーション処理を続行する場合は、非同期 BeginReceive メソッドを使用します。

同期 Receive 操作は、明示的なタイムアウトの有無にかかわらず使用できます。

メッセージが使用できない場合は、メッセージが使用可能になるまで、またはタイムアウトを超えるまでブロックされます。

Receive は、複数回または同時に呼び出すことができます。 受信したメッセージごとに完了できる Receive 呼び出しは 1 つだけです。

適用対象