IInputChannel.Receive メソッド

定義

明示的または暗黙的に定義されている期間内で利用できるメッセージがある場合、チャネルで受信されたメッセージを返します。

オーバーロード

Receive()

利用できるメッセージがある場合、受信したメッセージを返します。 メッセージが利用できない場合は、既定の時間が経過するまでブロックします。

Receive(TimeSpan)

利用できるメッセージがある場合、受信したメッセージを返します。 メッセージが利用できない場合は、指定した時間が経過するまでブロックします。

注釈

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

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

メッセージが利用できない場合は、いずれかのメッセージが利用可能になるか、タイムアウトが経過するまでブロックします。

Receive()

ソース:
IInputChannel.cs
ソース:
IInputChannel.cs
ソース:
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);
}

注釈

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

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

メッセージが利用できない場合は、いずれかのメッセージが利用可能になるか、タイムアウトが経過するまでブロックします。

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

適用対象

Receive(TimeSpan)

ソース:
IInputChannel.cs
ソース:
IInputChannel.cs
ソース:
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 が経過しました。

指定したタイムアウトの値が 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 つだけ完了できます。

適用対象