использование async / await для заполнения DGV
Привет У меня есть небольшие проблемы с запуском моего datagridview с помощью метода async / await.
Событие нажатия кнопки:
private async void button2_Click(object sender, EventArgs e) { datagridview1.Visible = true; //Progressbar Progressbar1 .Visible = true; Progressbar1 .Style = ProgressBarStyle.Marquee; var period2 = cb1.SelectedValue.ToString(); var period1 = cb2.SelectedValue.ToString(); /*A variable to hold the parameters*/ //var table = await loadTable((period1, period2)); await Task.Run(() => loadTable(period1, period2)); /*back to the UI */ //datagridview1.DataSource = datatable; //datagridview1.DataSource = table; Progressbar1 .Visible = false; }
Я попытался получить DGV с помощью using the two / / datagridview.Линия источника данных безуспешно.
Метод моей задачи:
private async Task Zugänge(string period1, string period2) { // string C = ConfigurationManager.ConnectionStrings["123"].ConnectionString; using (var con = new SqlConnection(C)) using (var cmd = new SqlCommand()) { cmd.Connection = con; cmd.CommandText = ("[dbo].[spInfo]"); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@Periode2", period2); cmd.Parameters.AddWithValue("@Periode1", period1); // open the connection con.Open(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable datatable = new DataTable(); adapter.Fill(datatable ); await Task.Run(() => adapter.Fill(datatable )); } }
Afzaal Ahmad Zeeshan
Что такое отчет о неудаче? Можете ли вы поделиться, почему вы считаете, что этот код не работает?
Также помните, что операторы async/await просто позволяют вам использовать модель асинхронного программирования в вашем приложении. В противном случае они бесполезны для работы с графикой.
mikybrain1
Хорошо. Если я использую строку var table = await loadTable ((period1, period2)); и устанавливаю ее в DGV, то подчеркиваю таблицу, говоря, что "void" не может неявно типизированные локальные переменные выделяться.
И если я использую эту строку: datagridview1.DataSource = datatable; она утверждает, что база данных имен не существует в текущем контексте.
Afzaal Ahmad Zeeshan
В нем будет указано, datatable
не существует в текущем контексте, нет идентификатора database
используется здесь.
Кроме того, void не может быть сохранен в значение переменной. loadTable
может быть возвращена пустота (подпись может быть, private async void loadTable
), при этом он вам этого не позволяет.
mikybrain1
Просто в CHill60, которые заставляют меня думать дальше, даже когда я#м несомненно, разочарован.