共用方式為


非同步作業 (WCF Data Services)

相較於在內部網路中執行的應用程式,Web 應用程式必須可容納用戶端與伺服器之間更高的延遲。 若要最佳化應用程式的效能及使用者經驗,我們建議您在透過 Web 存取 WCF Data Services 伺服器時,使用 DataServiceContextDataServiceQuery<TElement> 類別的非同步方法。

雖然 WCF Data Services 伺服器會非同步處理 HTTP 要求,但是 WCF Data Services 用戶端程式庫的部分方法還是會同步,而且在繼續執行之前會等候整個要求回應交換完成為止。 WCF Data Services 用戶端程式庫的非同步方法不會等候此交換完成,且它可讓您的應用程式同一時間維持回應的使用者介面。

您可以針對分別從 Begin 和 End 開始的 DataServiceContextDataServiceQuery<TElement> 類別使用一組方法來執行非同步作業。 作業完成時,Begin 方法會註冊服務呼叫的委派。 在註冊的委派中應該呼叫 End 方法,以處理來自已完成作業的回呼。 當您呼叫 End 方法來完成非同步作業時,必須從您用來開始作業的相同 DataServiceQuery<TElement>DataServiceContext 執行個體進行。 每個 Begin 方法都會採用 state 參數,這個參數可以將狀態物件傳遞至回呼。 這個狀態物件擷取自與回呼一起提供的 IAsyncResult,且用於呼叫對應的 End 方法來完成非同步作業。 例如,如果您在執行個體上呼叫 BeginExecute 方法,提供 DataServiceQuery<TElement> 執行個體做為 state 參數時,IAsyncResult 會傳回同一個 DataServiceQuery<TElement> 執行個體。 接著會使用這個 DataServiceQuery<TElement> 執行個體呼叫 EndExecute 方法,以完成查詢作業。 如需詳細資訊,請參閱 HOW TO:執行非同步資料服務查詢 (WCF Data Services)

注意

.NET Framework for Silverlight 中提供的用戶端程式庫只支援非同步作業。如需詳細資訊,請參閱 WCF Data Services (Silverlight)

.NET Framework 用戶端程式庫支援下列非同步作業:

作業

方法

執行 DataServiceQuery<TElement>

DataServiceContext 執行查詢。

DataServiceContext 執行批次查詢。

將相關實體載入至 DataServiceContext

將物件的變更儲存於 DataServiceContext

非同步作業的執行緒考量

在多執行緒的應用程式中,不一定要在用來呼叫建立初始要求之 Begin 方法的相同執行緒上叫用註冊為非同步作業之回呼的委派。 在必須針對特定執行緒叫用回呼的應用程式中,您必須明確地將處理回應之 End 方法的執行封送處理至所需的執行緒。 例如,在以 Windows Presentation Foundation (WPF) 為基礎的應用程式以及以 Silverlight 為基礎的應用程式中,必須在 Dispatcher 物件上使用 BeginInvoke 方法將回應封送回 UI 執行緒。 如需詳細資訊,請參閱Querying the Data Service (WCF Data Services/Silverlight)

請參閱

其他資源

資料用戶端 (WCF Data Services)