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を返します。

適用対象