IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始非同步的作業,接收具有已指定逾時以及與該作業關聯之狀態物件的訊息。
public:
IAsyncResult ^ BeginTryReceive(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginTryReceive (TimeSpan timeout, AsyncCallback callback, object state);
abstract member BeginTryReceive : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginTryReceive (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult
參數
- callback
- AsyncCallback
AsyncCallback 委派,這個委派會接收非同步作業完成的通知。
- state
- Object
應用程式所指定的物件,其中包含與非同步作業相關聯的狀態資訊。
傳回
IAsyncResult,參考非同步的接收作業。
例外狀況
在完成作業之前超出了指定的 timeout
。
指定的逾時小於零。
範例
下列程式碼說明如何實作這個方法:
public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
result.Begin();
return result;
}
備註
當您希望應用程式繼續執行而不要等候時,請使用非同步的 BeginTryReceive(TimeSpan, AsyncCallback, Object) 方法。 當目前的執行緒可接受進行封鎖並同時回覆要求訊息,或是直到已超過逾時間隔時,請使用同步的 TryReceive(TimeSpan, Message) 方法。
在訊息可以於通道中使用或發生逾時之後,作業才會完成。
如果您要處理逾時,而不只是重新擲回或者包裝 TimeoutException,則您應該呼叫 BeginTryReceive(TimeSpan, AsyncCallback, Object),而不是呼叫 BeginReceive。
如果您不要特別去處理逾時,則只需要呼叫 BeginReceive,否則您將遺失錯誤資訊。
給實施者的注意事項
如果超出了指定的 false
,作業會從 EndTryReceive(IAsyncResult, Message) 傳回 timeout
。