IInputChannel.Receive 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
如果輸入通道在明確或隱含定義的時間間隔內有收到訊息,則將此訊息傳回。
多載
Receive() |
如果有收到訊息,則將該訊息傳回。 如果沒有收到訊息,執行緒就會封鎖一段預設間隔時間。 |
Receive(TimeSpan) |
如果有收到訊息,則將該訊息傳回。 如果沒有收到訊息,執行緒就會封鎖一段指定的間隔時間。 |
備註
當目前的執行緒可接受進行封鎖直到其接收到要求訊息或者超過由 Receive 指定的時間間隔,請使用同步的 timeout
方法。 當您需要應用程式繼續執行,而不要等候接收到要求時,請使用非同步的 BeginReceive 方法。
不管有沒有明確的逾時,都可以使用同步 Receive 作業。
如果沒有收到訊息,執行緒就會加以封鎖,直到有訊息可使用或超過逾時為止。
Receive()
如果有收到訊息,則將該訊息傳回。 如果沒有收到訊息,執行緒就會封鎖一段預設間隔時間。
public:
System::ServiceModel::Channels::Message ^ Receive();
public System.ServiceModel.Channels.Message Receive ();
abstract member Receive : unit -> System.ServiceModel.Channels.Message
Public Function Receive () As Message
傳回
所接收的 Message。
範例
下列程式碼說明如何實作這個方法:
public Message Receive()
{
return Receive(DefaultReceiveTimeout);
}
備註
當目前的執行緒可接受進行封鎖直到其接收到要求訊息或者超過由 Receive 指定的時間間隔,請使用同步的 timeout
方法。 當您希望應用程式繼續執行,而不要等候接收到要求時,請使用非同步的 BeginReceive 方法。
不管有沒有明確的逾時,都可以使用同步 Receive 作業。
如果沒有收到訊息,執行緒就會加以封鎖,直到有訊息可使用或超過逾時為止。
Receive 可以多次呼叫或同時呼叫。 每個已收到的訊息只能完成一次 Receive 呼叫。
適用於
Receive(TimeSpan)
如果有收到訊息,則將該訊息傳回。 如果沒有收到訊息,執行緒就會封鎖一段指定的間隔時間。
public:
System::ServiceModel::Channels::Message ^ Receive(TimeSpan timeout);
public System.ServiceModel.Channels.Message Receive (TimeSpan timeout);
abstract member Receive : TimeSpan -> System.ServiceModel.Channels.Message
Public Function Receive (timeout As TimeSpan) As Message
參數
- timeout
- TimeSpan
TimeSpan,指定必須在逾時和擲回 TimeoutException 多久之前完成接收作業。
傳回
所接收的 Message。
例外狀況
在完成作業之前超出了指定的 timeout
。
指定的逾時小於零。
範例
下列程式碼說明如何實作這個方法:
public Message Receive(TimeSpan timeout)
{
Message message;
while (true)
{
message = this.InnerChannel.Receive(timeout);
if (ProcessReceivedMessage(ref message))
{
break;
}
}
return message;
}
備註
當目前的執行緒可接受進行封鎖直到其接收到要求訊息或者超過由 Receive 指定的時間間隔,請使用同步的 timeout
方法。 當您希望應用程式繼續執行,而不要等候接收到要求時,請使用非同步的 BeginReceive 方法。
不管有沒有明確的逾時,都可以使用同步 Receive 作業。
如果沒有收到訊息,執行緒就會加以封鎖,直到有訊息可使用或超過逾時為止。
Receive 可以多次呼叫或同時呼叫。 每個已收到的訊息只能完成一次 Receive 呼叫。