IInputChannel.TryReceive(TimeSpan, Message) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
嘗試在指定的時間間隔內接收訊息。
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 方法時傳回。
傳回
如果在超過 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,否則您將遺失錯誤資訊。