如何:实现异步服务操作

在 Windows Communication Foundation (WCF) 应用程序中,服务操作可以按同步方式或异步方式实现,而无需指示客户端如何调用它。例如,异步服务操作可以同步调用,而同步服务操作可以异步调用。有关如何在客户端应用程序中异步调用操作的示例,请参见如何:以异步方式调用 WCF 服务操作。有关 同步操作和异步操作的更多信息,请参见设计服务协定同步和异步操作

按异步方式实现服务操作

  1. 在服务协定中,按照 .NET 异步设计准则声明一个异步方法对。Begin 方法采用一个参数、一个回调对象和一个状态对象作为参数,并且返回一个 System.IAsyncResult 和一个匹配的 End 方法,该方法采用一个 System.IAsyncResult 作为参数并将返回值返回。有关异步调用的更多信息,请参见Asynchronous Programming Design Patterns

  2. 使用 System.ServiceModel.OperationContractAttribute 属性 (attribute) 标记该异步方法对的 Begin 方法,并将 System.ServiceModel.OperationContractAttribute.AsyncPattern 属性 (property) 设置为 true。例如,下面的代码执行步骤 1 和 2。

  3. 按照异步设计准则在服务类中实现 Begin/End 方法对。例如,下面的代码示例演示一个实现,在此实现中,异步服务操作的 BeginEnd 部分都向控制台写入一个字符串,并且将 End 操作的返回值返回到客户端。有关完整的代码示例,请参见“示例”部分。

示例

下面的代码示例演示以下各项:

  1. 与下列各项之间的服务协定接口:
    1. 同步 SampleMethod 操作。
    2. 异步 BeginSampleMethod 操作。
    3. 异步 BeginServiceAsyncMethod/EndServiceAsyncMethod 操作对。
  2. 使用 System.IAsyncResult 对象的服务实现。

另请参见

概念

设计服务协定
同步和异步操作