IInputChannel.TryReceive(TimeSpan, Message) 方法

定義

嘗試在指定的時間間隔內接收訊息。

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

參數

timeout
TimeSpan

IAsyncResult,呼叫其中一種 BeginReceive 方法時傳回。

message
Message

所接收的 Message

傳回

Boolean

如果在超過 timeout 之前接收到訊息,則為 true,否則為 false

例外狀況

在完成作業之前超出了指定的 timeout

指定的逾時小於零。

範例

下列程式碼說明如何實作這個方法:

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

備註

如果您要處理逾時,而不只是重新擲回或者包裝 TimeoutException,則您應該呼叫 TryReceive(TimeSpan, Message),而不是呼叫 Receive

如果您不要特別去處理逾時,則只需要呼叫 Receive,否則您將遺失錯誤資訊。

適用於