DataServiceContext.BeginExecute 方法

定义

通过将请求异步发送到数据服务来执行特定 URI。Asynchronously sends a request to the data service to execute a specific URI.

重载

BeginExecute<T>(DataServiceQueryContinuation<T>, AsyncCallback, Object)

通过将请求异步发送到数据服务,在分页查询结果中检索下一页数据。Asynchronously sends a request to the data service to retrieve the next page of data in a paged query result.

BeginExecute<TElement>(Uri, AsyncCallback, Object)

异步发送请求,因此在等待服务返回的结果时,此调用不会阻止处理。Asynchronously sends the request so that this call does not block processing while waiting for the results from the service.

BeginExecute<T>(DataServiceQueryContinuation<T>, AsyncCallback, Object)

通过将请求异步发送到数据服务,在分页查询结果中检索下一页数据。Asynchronously sends a request to the data service to retrieve the next page of data in a paged query result.

public:
generic <typename T>
 IAsyncResult ^ BeginExecute(System::Data::Services::Client::DataServiceQueryContinuation<T> ^ continuation, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginExecute<T> (System.Data.Services.Client.DataServiceQueryContinuation<T> continuation, AsyncCallback callback, object state);
member this.BeginExecute : System.Data.Services.Client.DataServiceQueryContinuation<'T> * AsyncCallback * obj -> IAsyncResult
Public Function BeginExecute(Of T) (continuation As DataServiceQueryContinuation(Of T), callback As AsyncCallback, state As Object) As IAsyncResult

类型参数

T

查询所返回的类型。The type returned by the query.

参数

continuation
DataServiceQueryContinuation<T>

DataServiceQueryContinuation<T> 对象,表示要从数据服务返回的下一页数据。A DataServiceQueryContinuation<T> object that represents the next page of data to return from the data service.

callback
AsyncCallback

当结果可供客户端使用时将调用的委托。Delegate to invoke when results are available for client consumption.

state
Object

已传递到回调的用户定义的状态对象。User-defined state object passed to the callback.

返回

IAsyncResult

表示操作状态的 IAsyncResultAn IAsyncResult that represents the status of the operation.

注解

所提供的 DataServiceQueryContinuation<T> 对象所包含的 URI 在执行时会返回查询结果中的下一页数据。The supplied DataServiceQueryContinuation<T> object contains the URI that, when executed, returns the next page of data in the query result.

适用于

BeginExecute<TElement>(Uri, AsyncCallback, Object)

异步发送请求,因此在等待服务返回的结果时,此调用不会阻止处理。Asynchronously sends the request so that this call does not block processing while waiting for the results from the service.

public:
generic <typename TElement>
 IAsyncResult ^ BeginExecute(Uri ^ requestUri, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginExecute<TElement> (Uri requestUri, AsyncCallback callback, object state);
member this.BeginExecute : Uri * AsyncCallback * obj -> IAsyncResult
Public Function BeginExecute(Of TElement) (requestUri As Uri, callback As AsyncCallback, state As Object) As IAsyncResult

类型参数

TElement

查询所返回的类型。The type returned by the query.

参数

requestUri
Uri

查询请求将发送到的 URI。The URI to which the query request will be sent. 该 URI 可以是任何有效的数据服务 URI;它可以包含 $ 查询参数。The URI may be any valid data service URI; it can contain $ query parameters.

callback
AsyncCallback

当结果可供客户端使用时将调用的委托。Delegate to invoke when results are available for client consumption.

state
Object

已传递到回调的用户定义的状态对象。User-defined state object passed to the callback.

返回

IAsyncResult

用于跟踪异步操作状态的对象。An object that is used to track the status of the asynchronous operation.

示例

下面的示例显示如何通过调用 BeginExecute 方法以启动查询来执行异步查询。The following example shows how to execute an asynchronous query by calling the BeginExecute method to start the query. 内联委托调用 EndExecute 方法以显示查询结果。The inline delegate calls the EndExecute method to display the query results. 此示例使用 DataServiceContext 基于 Northwind 数据服务的添加服务引用工具生成的,该工具是在完成 WCF Data Services 时创建的。This example uses the DataServiceContext generated by the Add Service Reference tool based on the Northwind data service, which is created when you complete the WCF Data Services .

public static void BeginExecuteCustomersQuery()
{
    // Create the DataServiceContext using the service URI.
    NorthwindEntities context = new NorthwindEntities(svcUri);

    // Define the query to execute asynchronously that returns
    // all customers with their respective orders.
    DataServiceQuery<Customer> query = (DataServiceQuery<Customer>)(from cust in context.Customers.Expand("Orders")
                                       where cust.CustomerID == "ALFKI"
                                       select cust);

    try
    {
        // Begin query execution, supplying a method to handle the response
        // and the original query object to maintain state in the callback.
        query.BeginExecute(OnCustomersQueryComplete, query);
    }
    catch (DataServiceQueryException ex)
    {
        throw new ApplicationException(
            "An error occurred during query execution.", ex);
    }
}

// Handle the query callback.
private static void OnCustomersQueryComplete(IAsyncResult result)
{
    // Get the original query from the result.
    DataServiceQuery<Customer> query =
        result as DataServiceQuery<Customer>;

    foreach (Customer customer in query.EndExecute(result))
    {
        Console.WriteLine("Customer Name: {0}", customer.CompanyName);
        foreach (Order order in customer.Orders)
        {
            Console.WriteLine("Order #: {0} - Freight $: {1}",
                order.OrderID, order.Freight);
        }
    }
}
Public Shared Sub BeginExecuteCustomersQuery()
    ' Create the DataServiceContext using the service URI.
    Dim context = New NorthwindEntities(svcUri)

    ' Define the delegate to callback into the process
    Dim callback As AsyncCallback = AddressOf OnCustomersQueryComplete

    ' Define the query to execute asynchronously that returns 
    ' all customers with their respective orders.
    Dim query As DataServiceQuery(Of Customer) = _
    context.Customers.Expand("Orders")

    Try
        ' Begin query execution, supplying a method to handle the response
        ' and the original query object to maintain state in the callback.
        query.BeginExecute(callback, query)
    Catch ex As DataServiceQueryException
        Throw New ApplicationException( _
                "An error occurred during query execution.", ex)
    End Try
End Sub
' Handle the query callback.
Private Shared Sub OnCustomersQueryComplete(ByVal result As IAsyncResult)
    ' Get the original query from the result.
    Dim query As DataServiceQuery(Of Customer) = _
        CType(result.AsyncState, DataServiceQuery(Of Customer))

    ' Complete the query execution.
    For Each customer As Customer In query.EndExecute(result)
        Console.WriteLine("Customer Name: {0}", customer.CompanyName)
        For Each order As Order In customer.Orders
            Console.WriteLine("Order #: {0} - Freight $: {1}", _
                    order.OrderID, order.Freight)
        Next
    Next
End Sub

注解

返回的 IAsyncResult 对象可用于确定异步操作何时已完成。The returned IAsyncResult object is used to determine when the asynchronous operation has completed. 有关详细信息,请参阅 异步操作For more information, see Asynchronous Operations.

BeginExecute 方法使用与 Execute 方法相同的语义,但此方法异步发送请求,因此此调用在等待服务返回的结果时不会阻止处理。The method BeginExecute uses the same semantics as Execute, however this method asynchronously sends the request so that this call does not block processing while waiting for the results from the service. 根据标准的 begin-end 异步模式,在检索查询结果时将调用所提供的回调。According to the standard begin-end asynchronous pattern, the provided callback is invoked when query results are retrieved.

适用于