Condividi tramite


IInputChannel.BeginReceive Metodo

Definizione

Inizia un'operazione di ricezione asincrona.

Overload

BeginReceive(AsyncCallback, Object)

Inizia un'operazione asincrona per ricevere un messaggio al quale è associato un oggetto di stato.

BeginReceive(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per ricevere un messaggio al quale sono associati un timeout e un oggetto di stato specificati.

Commenti

Se si desidera che l'elaborazione dell'applicazione continui senza attendere la ricezione della richiesta, utilizzare il metodo asincrono BeginReceive. Nei casi in cui è ammissibile che il thread corrente resti bloccato fino alla ricezione del messaggio di richiesta o fino al termine dell'intervallo di tempo indicato nel parametro Receive, usare il metodo timeout sincrono. L'operazione asincrona è disponibile con o senza un timeout esplicito.

BeginReceive(AsyncCallback, Object)

Origine:
IInputChannel.cs
Origine:
IInputChannel.cs

Inizia un'operazione asincrona per ricevere un messaggio al quale è associato un oggetto di stato.

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

Parametri

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 alla ricezione asincrona del messaggio.

Esempio

Nell'esempio di codice seguente viene illustrato come implementare questo metodo:

public IAsyncResult BeginReceive(AsyncCallback callback, object state)
{
    return BeginReceive(DefaultReceiveTimeout, callback, state);
}

Commenti

Se si desidera che l'elaborazione dell'applicazione continui senza attendere la ricezione della richiesta, utilizzare il metodo asincrono BeginReceive. Nei casi in cui è ammissibile che il thread corrente resti bloccato fino alla ricezione del messaggio di richiesta o fino al termine dell'intervallo di tempo indicato nel parametro Receive, usare il metodo timeout sincrono. L'operazione asincrona è disponibile con o senza un timeout esplicito.

Questo metodo riceve mediante un callback la notifica dell'identità del gestore eventi relativa all'operazione. L'operazione non è completa fino a quando un messaggio non viene reso disponibile nel canale.

Si applica a

BeginReceive(TimeSpan, AsyncCallback, Object)

Origine:
IInputChannel.cs
Origine:
IInputChannel.cs

Avvia un'operazione asincrona per ricevere un messaggio al quale sono associati un timeout e un oggetto di stato specificati.

public:
 IAsyncResult ^ BeginReceive(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (TimeSpan timeout, AsyncCallback callback, object state);
abstract member BeginReceive : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (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 BeginReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
    ReceiveAsyncResult<TChannel> result = new ReceiveAsyncResult<TChannel>(this, timeout, callback, state);
    result.Begin();
    return result;
}

Commenti

Se si desidera che l'elaborazione dell'applicazione continui senza attendere la ricezione della richiesta, utilizzare il metodo asincrono BeginReceive. Nei casi in cui è ammissibile che il thread corrente resti bloccato fino alla ricezione del messaggio di richiesta o fino al termine dell'intervallo di tempo indicato nel parametro Receive, usare il metodo timeout sincrono. L'operazione asincrona è disponibile con o senza un timeout esplicito.

L'operazione non è completa fino a quando un messaggio non viene reso disponibile nel canale o non si verifica il timeout.

Note per gli implementatori

L'operazione genera una TimeoutException se il timeout specificato viene superato prima del completamento.

Si applica a