IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Méthode

Définition

Commence une opération asynchrone pour recevoir un message auquel sont associés un délai d'attente spécifié et un objet d'état.

public:
 IAsyncResult ^ BeginTryReceive(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginTryReceive (TimeSpan timeout, AsyncCallback callback, object state);
abstract member BeginTryReceive : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginTryReceive (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult

Paramètres

timeout
TimeSpan

TimeSpan qui spécifie la durée d'attente pour qu'un message soit disponible.

callback
AsyncCallback

Le délégué AsyncCallback qui reçoit la notification de la fin de l'opération asynchrone.

state
Object

Objet, spécifié par l'application, qui contient des informations d'état associées à l'opération asynchrone.

Retours

IAsyncResult qui fait référence à l'opération asynchrone de réception.

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 IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
    TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
    result.Begin();
    return result;
}

Remarques

Utilisez la méthode asynchrone BeginTryReceive(TimeSpan, AsyncCallback, Object) lorsque vous souhaitez que le traitement de l'application se poursuive sans attendre. Utilisez la méthode TryReceive(TimeSpan, Message) synchrone lorsque le thread en cours peut faire l'objet d'un blocage en répondant au message de demande ou jusqu'à ce que l'intervalle de délai d'attente soit dépassé.

L'opération ne se termine que lorsqu'un message est disponible dans le canal ou lorsque le délai d'attente a expiré.

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

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

Notes pour les responsables de l’implémentation

L'opération retourne false à partir de EndTryReceive(IAsyncResult, Message) si le timeout spécifié est dépassé.

S’applique à