DataServiceContext.BeginExecute Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Envia de forma assíncrona uma solicitação ao serviço de dados para executar um URI específico.
Sobrecargas
BeginExecute<T>(DataServiceQueryContinuation<T>, AsyncCallback, Object) |
Envia de forma assíncrona uma solicitação ao serviço de dados para recuperar a próxima página de dados em um resultado paginado da consulta. |
BeginExecute<TElement>(Uri, AsyncCallback, Object) |
Envia de forma assíncrona a solicitação, para que essa chamada não bloqueie o processamento enquanto aguarda os resultados do serviço. |
BeginExecute<T>(DataServiceQueryContinuation<T>, AsyncCallback, Object)
Envia de forma assíncrona uma solicitação ao serviço de dados para recuperar a próxima página de dados em um resultado paginado da consulta.
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
Parâmetros de tipo
- T
O tipo retornado pela consulta.
Parâmetros
- continuation
- DataServiceQueryContinuation<T>
Um objeto DataServiceQueryContinuation<T> que representa a próxima página de dados a ser retornada do serviço de dados.
- callback
- AsyncCallback
Delegado a ser invocado quando os resultados estiverem disponíveis para consumo do cliente.
- state
- Object
Objeto de estado definido pelo usuário passado ao retorno de chamada.
Retornos
Um IAsyncResult que representa o status da operação.
Comentários
O objeto fornecido DataServiceQueryContinuation<T> contém o URI que, quando executado, retorna a próxima página de dados no resultado da consulta.
Aplica-se a
BeginExecute<TElement>(Uri, AsyncCallback, Object)
Envia de forma assíncrona a solicitação, para que essa chamada não bloqueie o processamento enquanto aguarda os resultados do serviço.
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
Parâmetros de tipo
- TElement
O tipo retornado pela consulta.
Parâmetros
- requestUri
- Uri
O URI para o qual a solicitação de consulta será enviada. O URI pode ser qualquer URI; válido do serviço de dados; ele pode conter parâmetros de consulta $
.
- callback
- AsyncCallback
Delegado a ser invocado quando os resultados estiverem disponíveis para consumo do cliente.
- state
- Object
Objeto de estado definido pelo usuário passado ao retorno de chamada.
Retornos
Um objeto que é usado para acompanhar o status da operação assíncrona.
Exemplos
O exemplo a seguir mostra como executar uma consulta assíncrona chamando o BeginExecute método para iniciar a consulta. O delegado embutido chama o EndExecute método para exibir os resultados da consulta. Este exemplo usa o DataServiceContext gerado pela ferramenta Adicionar Referência de Serviço com base no serviço de dados Northwind, que é criado quando você conclui o 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
Comentários
O objeto retornado IAsyncResult é usado para determinar quando a operação assíncrona foi concluída. Para obter mais informações, consulte Operações assíncronas.
O método BeginExecute usa a mesma semântica que Execute, no entanto, esse método envia de forma assíncrona a solicitação para que essa chamada não bloqueie o processamento enquanto aguarda os resultados do serviço. De acordo com o padrão assíncrono de início de fim padrão, o retorno de chamada fornecido é invocado quando os resultados da consulta são recuperados.