Share via


IInputChannel.BeginReceive 方法

定义

开始异步接收操作。

重载

BeginReceive(AsyncCallback, Object)

开始用于接收消息的异步操作,该操作具有关联的状态对象。

BeginReceive(TimeSpan, AsyncCallback, Object)

开始用于接收消息的异步操作,该操作具有指定的超时值和状态对象与之关联。

注解

如果需要应用程序处理继续进行而不等待接收请求,则使用异步 BeginReceive 方法。 如果当前线程在收到请求消息或超出 Receive 指定的时间间隔之前可以被阻塞,则使用同步 timeout 方法。 在有无显式超时的情况下,异步操作都可用。

BeginReceive(AsyncCallback, Object)

Source:
IInputChannel.cs
Source:
IInputChannel.cs
Source:
IInputChannel.cs

开始用于接收消息的异步操作,该操作具有关联的状态对象。

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 方法。 在有无显式超时的情况下,异步操作都可用。

此方法通过回调为操作接收事件处理程序标识的通知。 直到通道中出现消息时,才完成此操作。

适用于

BeginReceive(TimeSpan, AsyncCallback, Object)

Source:
IInputChannel.cs
Source:
IInputChannel.cs
Source:
IInputChannel.cs

开始用于接收消息的异步操作,该操作具有指定的超时值和状态对象与之关联。

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

参数

timeout
TimeSpan

一个 TimeSpan,指定等待消息变为可用所用的时间间隔。

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

适用于