다음을 통해 공유


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은 시간 제한 전에 메시지 도착을 대기하는 최대 시간 간격을 지정합니다.

반환

Boolean

timeout이 초과되기 전에 메시지가 도착했으면 true이고, 그렇지 않으면 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) 메서드를 사용합니다.

구현자 참고

지정된 timeout 시간이 초과된 경우 시간 제한 예외가 아닌 작업이 반환 false 됩니다.

적용 대상