IInputChannel.Receive Metodo

Definizione

Restituisce un messaggio ricevuto dal canale di input, se ne è disponibile uno con un intervallo di tempo definito in modo esplicito o implicito.

Overload

Receive()

Se disponibile, restituisce il messaggio ricevuto. Se un messaggio non è disponibile, il thread si blocca per un intervallo di tempo predefinito.

Receive(TimeSpan)

Se disponibile, restituisce il messaggio ricevuto. Se un messaggio non è disponibile, il thread si blocca per l'intervallo di tempo specificato.

Commenti

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. Se si desidera che l'elaborazione dell'applicazione continui senza attendere la ricezione della richiesta, utilizzare il metodo asincrono BeginReceive.

L'operazione sincrona Receive è disponibile con o senza un timeout esplicito.

Se un messaggio non è disponibile, il thread si blocca fino a quando non ne viene trovato uno o non viene superato il timeout.

Receive()

Se disponibile, restituisce il messaggio ricevuto. Se un messaggio non è disponibile, il thread si blocca per un intervallo di tempo predefinito.

public:
 System::ServiceModel::Channels::Message ^ Receive();
public System.ServiceModel.Channels.Message Receive ();
abstract member Receive : unit -> System.ServiceModel.Channels.Message
Public Function Receive () As Message

Restituisce

Message

Message ricevuto.

Esempio

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

public Message Receive()
{
    return Receive(DefaultReceiveTimeout);
}

Commenti

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. Se si desidera che l'elaborazione dell'applicazione continui senza attendere la ricezione della richiesta, utilizzare il metodo asincrono BeginReceive.

L'operazione sincrona Receive è disponibile con o senza un timeout esplicito.

Se un messaggio non è disponibile, il thread si blocca fino a quando non ne viene trovato uno o non viene superato il timeout.

Receive può essere chiamato più volte o contemporaneamente. Per ogni messaggio ricevuto può essere completata solo una chiamata Receive.

Si applica a

Receive(TimeSpan)

Se disponibile, restituisce il messaggio ricevuto. Se un messaggio non è disponibile, il thread si blocca per l'intervallo di tempo specificato.

public:
 System::ServiceModel::Channels::Message ^ Receive(TimeSpan timeout);
public System.ServiceModel.Channels.Message Receive (TimeSpan timeout);
abstract member Receive : TimeSpan -> System.ServiceModel.Channels.Message
Public Function Receive (timeout As TimeSpan) As Message

Parametri

timeout
TimeSpan

TimeSpan specifica il tempo entro il quale l'operazione di ricezione deve essere completata, prima di scadere e restituire TimeoutException.

Restituisce

Message

Message ricevuto.

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 Message Receive(TimeSpan timeout)
{
    Message message;
    while (true)
    {
        message = this.InnerChannel.Receive(timeout);
        if (ProcessReceivedMessage(ref message))
        {
            break;
        }
    }

    return message;
}

Commenti

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. Se si desidera che l'elaborazione dell'applicazione continui senza attendere la ricezione della richiesta, utilizzare il metodo asincrono BeginReceive.

L'operazione sincrona Receive è disponibile con o senza un timeout esplicito.

Se un messaggio non è disponibile, il thread si blocca fino a quando non ne viene trovato uno o non viene superato il timeout.

Receive può essere chiamato più volte o contemporaneamente. Per ogni messaggio ricevuto può essere completata solo una chiamata Receive.

Si applica a