次の方法で共有


IInputChannel.WaitForMessage(TimeSpan) メソッド

定義

指定した時間内にメッセージが到着したかどうかを示す値を返します。

public:
 bool WaitForMessage(TimeSpan timeout);
public bool WaitForMessage (TimeSpan timeout);
abstract member WaitForMessage : TimeSpan -> bool
Public Function WaitForMessage (timeout As TimeSpan) As Boolean

パラメーター

timeout
TimeSpan

TimeSpan は、メッセージ到着の待機がタイムアウトするまでの最大時間を指定します。

戻り値

true が経過する前にメッセージを受信した場合は timeout、それ以外の場合は false

例外

操作が完了する前に、指定した timeout が経過しました。

指定したタイムアウトの値が 0 未満です。

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

public bool WaitForMessage(TimeSpan timeout)
{
    return this.InnerChannel.WaitForMessage(timeout);
}

注釈

WaitForMessage(TimeSpan) を呼び出しても、メッセージの受信または処理は行われません。

WaitForMessage(TimeSpan) メソッドは、主にユーザーがトランザクションを使用してメッセージを受信するようなトランザクション処理のシナリオで使用されます。 Receive だけをそのために普通に使用するときは、トランザクションを作成した後、Receive を呼び出して、トランザクションがタイムアウトする前にメッセージが到着することを期待する必要があります。到着しない可能性もあります。

代わりに、WaitForMessage(TimeSpan) を呼び出して適当なタイムアウト (無限も可能) を指定し、メッセージが到着してからトランザクションを開き、Receive を呼び出して、トランザクションがタイムアウトする前に確実にメッセージを返すこともできます。

このメソッドは同期メソッドであるため、メッセージが利用可能になるか、タイムアウトが発生するまで、現在のスレッドをブロックします。 キューにメッセージが到達するまで待機する間、現在のスレッドがブロックされてもいい場合は、WaitForMessage(TimeSpan) を使用します。 スレッドは、指定した timeout までブロックされます。 待機せずにアプリケーションの処理を継続する必要がある場合は、非同期の BeginWaitForMessage(TimeSpan, AsyncCallback, Object) メソッドを使用します。

注意 (実装者)

指定した false が経過した場合、操作は、タイムアウト例外ではなく timeout を返します。

適用対象