IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) 方法

定義

開始非同步的作業,接收具有已指定逾時以及與該作業關聯之狀態物件的訊息。

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

參數

timeout
TimeSpan

TimeSpan,指定等候訊息變成可以使用的時間間隔。

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

適用於