Condividi tramite


IInputChannel.TryReceive(TimeSpan, Message) Metodo

Definizione

Tenta di ricevere un messaggio entro l'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

Interfaccia IAsyncResult restituita da una chiamata a uno dei metodi BeginReceive.

message
Message

Message ricevuto.

Restituisce

Boolean

true se un messaggio viene ricevuto prima che il timeout sia scaduto. In caso contrario false.

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 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 prevede di gestire i timeout e non solo di generare di nuovo o eseguire il wrapping di TimeoutException, è necessario chiamare TryReceive(TimeSpan, Message) anziché Receive.

Se i timeout non verranno trattati in modo speciale, chiamare solo Receive, in caso contrario le informazioni sull'errore andranno perdute.

Si applica a