Sdílet prostřednictvím


IInputChannel.TryReceive(TimeSpan, Message) Metoda

Definice

Pokusí se přijmout zprávu v zadaném časovém intervalu.

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

Vrácená IAsyncResult voláním jedné z BeginReceive metod.

message
Message

Přijatý Message .

Návraty

true pokud je zpráva přijata před překročením timeout hodnoty ; v opačném případě false.

Výjimky

Před dokončením operace dojde k překročení zadané timeout hodnoty.

Zadaný časový limit je menší než nula.

Příklady

Následující kód ukazuje, jak tuto metodu implementovat:

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

Poznámky

Pokud se chystáte vyřešit vypršení časových limitů a ne jen znovu vyvolat nebo zabalit TimeoutException, měli byste místo Receivevolání volat TryReceive(TimeSpan, Message) .

Pokud nebudete zpracovávat vypršení časových limitů speciálně, stačí zavolat Receive, jinak ztratíte informace o chybě.

Platí pro