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