다음을 통해 공유


IInputChannel.TryReceive(TimeSpan, Message) 메서드

정의

지정된 시간 간격 내에 메시지를 수신하려고 시도합니다.

public:
 bool TryReceive(TimeSpan timeout, [Runtime::InteropServices::Out] System::ServiceModel::Channels::Message ^ % message);
public bool TryReceive (TimeSpan timeout, out System.ServiceModel.Channels.Message message);
abstract member TryReceive : TimeSpan * Message -> bool
Public Function TryReceive (timeout As TimeSpan, ByRef message As Message) As Boolean

매개 변수

timeout
TimeSpan

IAsyncResult 메서드 중 하나를 호출하면 반환되는 BeginReceive입니다.

message
Message

수신된 Message입니다.

반환

Boolean

timeout이 초과되기 전에 메시지를 수신하면 true이고, 그렇지 않으면 false입니다.

예외

작업을 완료하기 전에 지정된 timeout이 초과된 경우

지정된 시간 제한이 0보다 작은 경우

예제

다음 코드에서는 이 메서드를 구현하는 방법을 보여 줍니다.

public bool TryReceive(TimeSpan timeout, out Message message)
{
    bool result;
    while (true)
    {
        result = this.InnerChannel.TryReceive(timeout, out message);
        if (ProcessReceivedMessage(ref message))
        {
            break;
        }
    }

    return result;
}

설명

시간 제한을 처리하고 다시 throw하거나 래핑 TimeoutException하는 것뿐만 아니라 대신 호출 TryReceive(TimeSpan, Message) Receive해야 합니다.

시간 제한을 특별히 처리하지 않으면 호출 Receive하기만 하면 오류 정보가 손실됩니다.

적용 대상