Вопрос

У меня есть служба Odata Web API, над которым я работаю.Контроллер поддерживает Async, но я не могу найти какие-либо хорошие примеры о том, как загрузить DataGridView Async при вытягивании данных из службы ODATA.Я нашел эту ссылку, которая мне какая-то то, что там, но я не знаю, как закончить остальное, потому что в настоящее время я должен преобразовать DataServiceQuery в список или данные DataSource не удается. http://msdn.microsoft.com/ru--US / Библиотека / DD756367 (v= vs.110) .aspx

Мой код что-то вроде этого.

Private Sub getDataButton_Click(sender As Object, e As EventArgs) Handles getDataButton.Click
    ' Define the delegate to callback into the process 
    Dim callback As AsyncCallback = AddressOf OnLogsQueryComplete

    ' Define the query to execute asynchronously that returns  
    ' all customers with their respective orders. 
    Dim query As DataServiceQuery(Of LogServiceReference.Log) = (From log In context.Logs
                                                                   Select log)

    ' Begin query execution, supplying a method to handle the response 
    ' and the original query object to maintain state in the callback.
    DataGridView1.DataSource = query.BeginExecute(callback, query)
End Sub

Private Function OnLogsQueryComplete(ByVal result As IAsyncResult) As List(Of LogServiceReference.Log)
    ' Get the original query from the result. 
    Dim query As DataServiceQuery(Of LogServiceReference.Log) = _
        CType(result.AsyncState, DataServiceQuery(Of LogServiceReference.Log))

    Return query.EndExecute(result).ToList()
End Function
.

Я могу прочитать / код C # или VB, поэтому, если у вас есть примеры либо я все уши ...

Это было полезно?

Решение

Хотя это не по-настоящему заполнение async row-row-row-row-rust, она заполняет весь файл данных Async.Вот код, который я использовал.

Private gridRows As List(Of LogServiceReference.Log) = New List(Of LogServiceReference.Log)()
Private Delegate Sub UpdateUI()
Private oUpdateUI As UpdateUI

Private Sub getDataButton_Click(sender As Object, e As EventArgs) Handles getDataButton.Click
    Try
        gridRows.Clear()
        DataGridView1.DataSource = Nothing

        oUpdateUI = New UpdateUI(AddressOf DoUpdateUI)

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

        ' Define the query to execute asynchronously that returns  
        ' all customers with their respective orders. 
        Dim query As DataServiceQuery(Of LogServiceReference.Log) = (From log In context.Logs
                                                                       Select log)

        ' 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 Exception

    End Try
End Sub

Private Sub DoUpdateUI()
    DataGridView1.DataSource = gridRows
End Sub

Private Sub OnLogsQueryComplete(ByVal result As IAsyncResult)
    ' Get the original query from the result. 
    Dim query As DataServiceQuery(Of LogServiceReference.Log) = _
        CType(result.AsyncState, DataServiceQuery(Of LogServiceReference.Log))

    ' Complete the query execution. 
    For Each log As LogServiceReference.Log In query.EndExecute(result)
        gridRows.Add(log)
    Next

    Invoke(oUpdateUI)
End Sub
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top