IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Commence une opération asynchrone pour recevoir un message qui a un délai d’expiration et un objet d’état spécifiés qui lui sont associés.
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
Qui TimeSpan spécifie l’intervalle de temps d’attente pour qu’un message devienne disponible.
- callback
- AsyncCallback
Délégué AsyncCallback qui reçoit la notification de l’achèvement 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
Qui IAsyncResult fait référence à l’opération de réception asynchrone.
Exceptions
La valeur spécifiée timeout est dépassée avant la fin de l’opération.
Le délai d’expiration spécifié est inférieur à zéro.
Exemples
Le code suivant montre 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 continue sans attendre. Utilisez la méthode synchrone TryReceive(TimeSpan, Message) lorsqu’il est acceptable que le thread actuel soit bloqué pendant qu’il répond au message de demande ou jusqu’à ce que l’intervalle de délai d’expiration soit dépassé.
L’opération n’est pas terminée tant qu’un message n’est pas disponible dans le canal ou que le délai d’expiration se produit.
Si vous allez gérer les délais d’expiration et pas seulement jeter ou encapsuler le TimeoutException, alors vous devez appeler BeginTryReceive(TimeSpan, AsyncCallback, Object) au lieu de BeginReceive.
Si vous ne traitez pas les délais d’expiration spécialement, appelez BeginReceivesimplement , sinon vous perdez des informations d’erreur.
Notes pour les responsables de l’implémentation
L’opération retourne false si EndTryReceive(IAsyncResult, Message) la valeur spécifiée timeout est dépassée.