Aracılığıyla paylaş


IInputChannel.TryReceive(TimeSpan, Message) Yöntem

Tanım

Belirtilen süre içinde bir ileti almaya çalışır.

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

Parametreler

timeout
TimeSpan

IAsyncResult yöntemlerinden birine BeginReceive yapılan bir çağrı tarafından döndürülen.

message
Message

Alınan Message .

Döndürülenler

true iletinin aşılmasından önce timeout alınırsa, aksi takdirde false.

Özel durumlar

timeout belirtilen işlem tamamlanmadan önce aşıldı.

Belirtilen zaman aşımı sıfırdan küçük.

Örnekler

Aşağıdaki kodda bu yöntemin nasıl uygulandığı gösterilmektedir:

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

Açıklamalar

Zaman aşımlarını işleyecek ve yalnızca öğesini yeniden atmayacak veya sarmalayacaksanız TimeoutExceptionyerine çağrısı TryReceive(TimeSpan, Message)Receiveyapmalısınız.

Zaman aşımlarını özel olarak ele almayacaksanız yalnızca çağrısı Receiveyapın, aksi takdirde hata bilgilerini kaybedersiniz.

Şunlara uygulanır