HOW TO:實作非同步服務作業
在 Windows Communication Foundation (WCF) 應用程式中,服務作業可以透過非同步或同步方式實作,不需規定用戶端呼叫服務作業的方式。例如,非同步服務作業可以利用同步方式呼叫,而同步服務作業可以透過非同步方式呼叫。如需顯示如何在用戶端應用程式內以非同步方式呼叫作業的範例,請參閱 HOW TO:以非同步方式呼叫 WCF 服務作業。如需 非同步和同步作業的詳細資訊,請參閱設計服務合約和同步和非同步作業。
以非同步方式實作服務作業
在您的服務合約中,根據 .NET 非同步設計方針宣告一個非同步方法組。Begin 方法可接受一個參數、回呼物件和狀態物件,並傳回 System.IAsyncResult 和對應的 End 方法,該方法會接受 System.IAsyncResult 並傳回其傳回值。如需非同步呼叫的詳細資訊,請參閱Asynchronous Programming Design Patterns。
使用 System.ServiceModel.OperationContractAttribute 屬性 (Attribute) 來標記非同步方法組中的 Begin 方法,並將 System.ServiceModel.OperationContractAttribute.AsyncPattern 屬性 (Property) 設定為 true。例如,下列程式碼會執行步驟 1 和 2。
根據非同步設計方針,在您的服務類別內實作 Begin/End 方法組。例如,下列程式碼範例會顯示利用非同步服務作業的 Begin 和 End 兩個部分,將字串寫入主控台的實作,以及傳回用戶端之 End 作業的傳回值。如需完整的程式碼範例,請參閱<範例>一節。
範例
下列程式碼範例會顯示:
- 服務合約介面,其中具有:
- 一個同步
SampleMethod
作業。 - 一個非同步
BeginSampleMethod
作業。 - 一個非同步
BeginServiceAsyncMethod
/EndServiceAsyncMethod
作業組。
- 一個同步
- 一個使用 System.IAsyncResult 物件的服務實作。