IInputChannel.TryReceive(TimeSpan, Message) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 시간 간격 내에 메시지를 수신하려고 시도합니다.
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입니다.
반환
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하기만 하면 오류 정보가 손실됩니다.