Ниже приведен код, который я использую. Предназначен для асинхронного вызова функции времени.Асинхронная функция, работающая как синхронный вызов
async Task<DataSet> GetDataAsync()
{
System.Threading.Thread.Sleep(5000);
SqlDataAdapter adpator = new SqlDataAdapter("Select * from table1;select * from table2;select * from table3;select * from table4"
, @"Data Source=ANKIT\SQLEXPRESS;Initial Catalog=IM_DB;Integrated Security=True");
DataSet ds = new DataSet();
adpator.Fill(ds);
return ds;
}
protected async void btnFillData_Click(object sender, EventArgs e)
{
lblStatus.Text = "Going to run a blocking thread....";
Task<DataSet> dsAsync = GetDataAsync();
lblStatus.Text = "Going to await the same......";
DataSet ds = await dsAsync;
lblStatus.Text = "released from await";
gvIngredient.DataSource = ds.Tables[0];
gvIngredient.DataBind();
}
Функция GetDataAsync работает как синхронный вызов. Я хочу, чтобы он был асинхронным, так как он имеет вызов базы данных для извлечения тысяч записей, требующих много времени.
Есть что-то, что я пропустил в async-модели на asp.net.
Какая ошибка вы получаете? – Dnyanesh
Чтобы заставить 'GetDataAsync' работать asynch, ваши вызовы на db' должны быть asynch', в противном случае вызовы блокируют –
https://msdn.microsoft.com/en-us/library/hh211418(v=vs. 110) .aspx –