共用方式為


HOW TO:實作非同步服務作業

在 Windows Communication Foundation (WCF) 應用程式中,服務作業可以透過非同步或同步方式實作,不需規定用戶端呼叫服務作業的方式。例如,非同步服務作業可以利用同步方式呼叫,而同步服務作業可以透過非同步方式呼叫。如需顯示如何在用戶端應用程式內以非同步方式呼叫作業的範例,請參閱 HOW TO:以非同步方式呼叫 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 物件的服務實作。

請參閱

概念

設計服務合約
同步和非同步作業