Freigeben über


IInputChannel.TryReceive(TimeSpan, Message) Methode

Definition

Versucht, eine Nachricht innerhalb eines angegebenen Zeitintervalls zu empfangen.

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

Parameter

timeout
TimeSpan

IAsyncResult, das von einem Aufruf der BeginReceive-Methoden zurückgegeben wurde.

message
Message

Der empfangene Message.

Gibt zurück

true, wenn eine Nachricht empfangen wird, bevor der timeout überschritten wurde, andernfalls false.

Ausnahmen

Der festgelegte timeout wird überstiegen, bevor der Vorgang abgeschlossen ist.

Der festgelegte Timeout ist kleiner als 0 (null).

Beispiele

Im folgenden Code wird veranschaulicht, wie diese Methode implementiert wird:

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

Hinweise

Wenn Sie Timeouts handhaben und nicht nur den TimeoutException neu auslösen oder einbinden, sollten Sie TryReceive(TimeSpan, Message) anstatt Receive aufrufen.

Wenn Sie Timeouts nicht gesondert behandeln, rufen Sie einfach Receive auf, andernfalls verlieren Sie Fehlerinformationen.

Gilt für: