Freigeben über


DataServiceContext.EndExecute<TElement>-Methode (IAsyncResult)

Wird aufgerufen, um BeginExecute abzuschließen.

Namespace:  System.Data.Services.Client
Assembly:  Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)

Syntax

'Declaration
Public Function EndExecute(Of TElement) ( _
    asyncResult As IAsyncResult _
) As IEnumerable(Of TElement)
'Usage
Dim instance As DataServiceContext
Dim asyncResult As IAsyncResult
Dim returnValue As IEnumerable(Of TElement)

returnValue = instance.EndExecute(asyncResult)
public IEnumerable<TElement> EndExecute<TElement>(
    IAsyncResult asyncResult
)
public:
generic<typename TElement>
IEnumerable<TElement>^ EndExecute(
    IAsyncResult^ asyncResult
)
member EndExecute : 
        asyncResult:IAsyncResult -> IEnumerable<'TElement> 
JScript unterstützt keine generischen Typen und Methoden.

Typparameter

  • TElement
    Der von der Abfrage zurückgegebene Typ.

Parameter

Rückgabewert

Typ: System.Collections.Generic.IEnumerable<TElement>
Die von der Abfrage zurückgegebenen Ergebnisse.

Ausnahmen

Ausnahme Bedingung
ArgumentNullException

Wenn asyncResult nullein NULL-Verweis (Nothing in Visual Basic) ist.

ArgumentException

Wenn asyncResult nicht aus dieser DataServiceContext Instanz stammt.

- oder -

Wenn die EndExecute-Methode zuvor aufgerufen wurde.

InvalidOperationException

Wenn ein Fehler entweder während der Ausführung der Anforderung ausgelöst wird oder wenn der Inhalt der Antwortnachricht in Objekte konvertiert wird.

DataServiceQueryException

Wenn der Datendienst den Fehler "HTTP 404: Ressource nicht gefunden" zurückgibt.

Hinweise

Nach dem Standardmuster für Beginn/Ende der asynchronen Verarbeitung wird der bereitgestellte Rückruf aufgerufen, wenn Abfrageergebnisse abgerufen werden. Weitere Informationen finden Sie unter Asynchrone Vorgänge (WCF Data Services).

Wenn der Rückruf aufgerufen wird, wurden alle Ergebnisse vom HTTP-Datenstrom gelesen, aber sie wurden nicht verarbeitet. Es wurden keine lokalen, auf den Benutzer zugeschnittene Objekte materialisiert/geändert, und Identitätsauflösung ist nicht aufgetreten. Wenn EndExecute aufgerufen wird, wird ein DataServiceResponse erstellt und zurückgegeben, aber die Ergebnisse wurden immer noch nicht verarbeitet. Identitätsauflösung, Objektmaterialisierung und Manipulation treten nur auf, wenn der Benutzer die Ergebnisse auflistet.

Beispiele

Im folgenden Beispiel wird gezeigt, wie eine asynchrone Abfrage durch Aufrufen der BeginExecute-Methode zum Starten der Abfrage ausgeführt wird. Der Inlinedelegat ruft die EndExecute-Methode zum Anzeigen der Abfrageergebnisse auf. In diesem Beispiel wird der vom Tool erzeugte DataServiceContext auf Grundlage des Northwind-Datendiensts hinzugefügt. Dieser wird erstellt, wenn Sie den WCF Data ServicesSchnellstart durchführen.

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
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);
        }
    }
}    

Siehe auch

Verweis

DataServiceContext Klasse

EndExecute-Überladung

System.Data.Services.Client-Namespace

Andere Ressourcen

Gewusst wie: Ausführen von asynchronen Datendienstabfragen (WCF Data Services)