Udostępnij za pośrednictwem


IInputChannel.TryReceive(TimeSpan, Message) Metoda

Definicja

Próbuje odebrać komunikat w określonym przedziale czasu.

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

Parametry

timeout
TimeSpan

Element IAsyncResult zwracany przez wywołanie jednej z BeginReceive metod.

message
Message

Odebrane Message .

Zwraca

true jeśli komunikat zostanie odebrany przed przekroczeniem; timeout w przeciwnym razie false.

Wyjątki

Określony timeout parametr zostanie przekroczony przed ukończeniem operacji.

Określony limit czasu jest mniejszy niż zero.

Przykłady

Poniższy kod ilustruje sposób implementacji tej metody:

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;
}

Uwagi

Jeśli zamierzasz obsługiwać limity czasu, a nie tylko ponownie zgłaszać lub opakowować element , należy wywołać metodę TimeoutExceptionTryReceive(TimeSpan, Message) zamiast Receive.

Jeśli nie będziesz traktować limitów czasu specjalnie, po prostu wywołaj Receivemetodę , w przeciwnym razie utracisz informacje o błędzie.

Dotyczy