IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Avvia un'operazione asincrona per ricevere un messaggio al quale sono associati un timeout e un oggetto di stato specificati.
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
Parametri
- timeout
- TimeSpan
Oggetto della classe TimeSpan che indica il tempo di attesa necessario affinché un messaggio diventi disponibile.
- callback
- AsyncCallback
Delegato AsyncCallback che riceve la notifica del completamento dell'operazione asincrona.
- state
- Object
Oggetto, specificato dall'applicazione, che contiene le informazioni sullo stato associate all'operazione asincrona.
Restituisce
IAsyncResult fa riferimento all'operazione di ricezione asincrona.
Eccezioni
Il timeout
specificato è stato superato prima del completamento dell'operazione.
Il timeout specificato è minore di zero.
Esempio
Nell'esempio di codice seguente viene illustrato come implementare questo metodo:
public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
result.Begin();
return result;
}
Commenti
Se si desidera che l'elaborazione dell'applicazione continui senza attendere, utilizzare il metodo asincrono BeginTryReceive(TimeSpan, AsyncCallback, Object). Nei casi in cui è ammissibile che il thread corrente resti bloccato mentre risponde al messaggio di richiesta o fino al termine dell'intervallo di tempo indicato, utilizzare il metodo sincrono TryReceive(TimeSpan, Message)
L'operazione non è completa fino a quando un messaggio non viene reso disponibile nel canale o non si verifica il timeout.
Se si prevede di gestire i timeout e non solo di generare di nuovo o eseguire il wrapping di TimeoutException, è necessario chiamare BeginTryReceive(TimeSpan, AsyncCallback, Object) anziché BeginReceive.
Se i timeout non verranno trattati in modo speciale, chiamare solo BeginReceive, in caso contrario le informazioni sull'errore andranno perdute.
Note per gli implementatori
L'operazione restituisce false
da EndTryReceive(IAsyncResult, Message) se viene superato il timeout
specificato.