Partager via


IInputChannel.TryReceive(TimeSpan, Message) Méthode

Définition

Tente de recevoir un message dans un intervalle de temps spécifié.

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

Paramètres

timeout
TimeSpan

IAsyncResult retourné par un appel de l'une des méthodes BeginReceive.

message
Message

Message reçu.

Retours

true si un message est reçu avant que le timeout soit dépassé ; sinon false.

Exceptions

Le timeout spécifié est dépassé avant que l'opération soit effectuée.

Le délai d'attente spécifié est inférieur à zéro.

Exemples

Le code suivant illustre comment implémenter cette méthode :

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

Remarques

Si vous souhaitez gérer des délais d'attente et ne pas seulement lever à nouveau ou encapsuler l'TimeoutException, vous devez appeler TryReceive(TimeSpan, Message) au lieu de Receive.

Si vous ne souhaitez pas traiter spécialement des délais d'attente, appelez uniquement Receive, sinon vous perdrez des informations relatives à l'erreur.

S’applique à