IInputChannel.TryReceive(TimeSpan, Message) Metod

Definition

Försöker ta emot ett meddelande inom ett angivet tidsintervall.

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

Parametrar

timeout
TimeSpan

Returneras IAsyncResult av ett anrop till någon av BeginReceive metoderna.

message
Message

Den Message mottagna.

Returer

true om ett meddelande tas emot innan har timeout överskridits, annars false.

Undantag

Den angivna timeout överskrids innan åtgärden har slutförts.

Den angivna tidsgränsen är mindre än noll.

Exempel

Följande kod visar hur du implementerar den här metoden:

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;
}

Kommentarer

Om du ska hantera timeouter och inte bara kasta om eller omsluta TimeoutExceptionbör du anropa TryReceive(TimeSpan, Message) i stället för Receive.

Om du inte kommer att behandla timeouter speciellt kan du bara anropa Receive, annars förlorar du felinformation.

Gäller för