IInputChannel.Receive メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
明示的または暗黙的に定義されている期間内で利用できるメッセージがある場合、チャネルで受信されたメッセージを返します。
オーバーロード
Receive() |
利用できるメッセージがある場合、受信したメッセージを返します。 メッセージが利用できない場合は、既定の時間が経過するまでブロックします。 |
Receive(TimeSpan) |
利用できるメッセージがある場合、受信したメッセージを返します。 メッセージが利用できない場合は、指定した時間が経過するまでブロックします。 |
注釈
要求メッセージを受信するか、timeout
で指定された期間が経過するまで、現在のスレッドがブロックされてもかまわない場合は、同期 Receive メソッドを使用します。 要求の受信を待たずにアプリケーションの処理を継続する必要がある場合は、非同期の BeginReceive メソッドを使用します。
同期 Receive 操作は、明示的なタイムアウトの指定の有無にかかわらず、使用できます。
メッセージが利用できない場合は、いずれかのメッセージが利用可能になるか、タイムアウトが経過するまでブロックします。
Receive()
- ソース:
- 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
利用できるメッセージがある場合、受信したメッセージを返します。 メッセージが利用できない場合は、指定した時間が経過するまでブロックします。
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 つだけ完了できます。
適用対象
.NET