IInputChannel.TryReceive(TimeSpan, Message) Metodo

Definizione

Prova a ricevere un messaggio entro un intervallo di tempo specificato.

public:
 bool TryReceive(TimeSpan timeout, [Runtime::InteropServices::Out] System::ServiceModel::Channels::Message ^ % message);
public bool TryReceive(TimeSpan timeout, out System.ServiceModel.Channels.Message message);
abstract member TryReceive : TimeSpan * Message -> bool
Public Function TryReceive (timeout As TimeSpan, ByRef message As Message) As Boolean

Parametri

timeout
TimeSpan

Oggetto IAsyncResult restituito da una chiamata a uno dei BeginReceive metodi .

message
Message

Oggetto Message ricevuto.

Valori restituiti

true se un messaggio viene ricevuto prima del superamento di timeout ; in caso contrario false, .

Eccezioni

L'oggetto specificato timeout viene superato prima del completamento dell'operazione.

Il timeout specificato è minore di zero.

Esempio

Il codice seguente illustra come implementare questo metodo:

public bool TryReceive(TimeSpan timeout, out Message message)
{
    bool result;
    while (true)
    {
        result = this.InnerChannel.TryReceive(timeout, out message);
        if (ProcessReceivedMessage(ref message))
        {
            break;
        }
    }

    return result;
}

Commenti

Se si intende gestire i timeout e non solo generare nuovamente o eseguire il wrapping di TimeoutException, è necessario chiamare TryReceive(TimeSpan, Message) invece di Receive.

Se non si prevede di trattare i timeout in modo speciale, è sufficiente chiamare Receive, altrimenti si perderanno le informazioni sull'errore.

Si applica a