DataGrid пуст при загрузке из asyn c SqlDataReader - PullRequest
0 голосов
/ 03 августа 2020

Я загружаю DataTable из SqlDataReader, затем привязываю его к datagrid. Когда я запускаю считыватель синхронно, сетка данных загружается правильно. Когда я выполняю программу чтения асинхронно, сетка данных пуста. Вот код.

Синхронно - работает

        async public Task<DataTable> GetDataTableAsync()
    {
        DataTable result = new DataTable();
        await this.Conn.OpenAsync();
        SqlDataReader reader = this.Comm.ExecuteReader();
        result.Load(reader);
        this.Conn.Close();
        return result;
    }

Асинхронно - не работает

        async public Task<DataTable> GetDataTableAsync()
    {
        DataTable result = new DataTable();
        await this.Conn.OpenAsync();
        SqlDataReader reader = await this.Comm.ExecuteReaderAsync();
        result.Load(reader);
        this.Conn.Close();
        return result;
    }

DataTable в обоих случаях выглядит одинаково.

Проект classi c ASP. NET, datagrid - Telerik RadGrid

1 Ответ

0 голосов
/ 03 августа 2020

Итак, мой ответ - объяснить ~ почему ваш код не работает. И я добавил SOF, чтобы помочь вам найти рабочий код.

Я думаю внутренне ....

    result.Load(reader);

Не вызывает .ExecuteReaderAsyn c

Итак, вы вручную вызывают

SqlDataReader reader = await this.Comm.ExecuteReaderAsync();

(и ничего не делают с ним на самом деле)

И тогда .Load тоже ничего не делает с ним.

Я думаю, что вы придется преследовать

(см. этот ответ)

Заполнить C# DataTable асинхронно

...