C#Mysql ExecuteOnQueryAsync不是异步的
我想获得教授这一特定类型课程的教师名单:C#Mysql ExecuteOnQueryAsync不是异步的,c#,mysql,asynchronous,C#,Mysql,Asynchronous,我想获得教授这一特定类型课程的教师名单: public static async Task<DataTable> getTeacherSHS() { DataTable dt = new DataTable(); string query = @"some long query dont mid this"; using (MySqlConnection conn = new MySqlConnection(cs)) { try
public static async Task<DataTable> getTeacherSHS()
{
DataTable dt = new DataTable();
string query = @"some long query dont mid this";
using (MySqlConnection conn = new MySqlConnection(cs))
{
try
{
await conn.OpenAsync();
using( MySqlCommand cmd = new MySqlCommand(query,conn))
{
cmd.Parameters.AddWithValue("@shs", "%SHS%");
cmd.Parameters.AddWithValue("@term", term);
await cmd.ExecuteNonQueryAsync();
using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
await da.FillAsync(dt);
MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
}
}
}
catch (MySqlException e)
{
Console.Write(e.Message);
}
if (conn != null)
await conn.CloseAsync();
}
return dt;
}
我的问题是,在单击按钮后,呼叫正在阻止其他I/O,我似乎无法在其他文本框中键入,因为它正在等待任务完成。我认为它是异步的,有人能解释一下吗?之所以会发生这种情况,是因为
MySql.Data
连接器中的Async
方法实际上不是异步的。它们在网络I/O上阻塞,仅在DB操作完成时返回。(有关更详细的描述,请参阅。)在MySQL连接器中报告此问题
要获得真正的异步DB操作,您必须等待该错误被修复,或者切换到其他连接器
我一直在开发一个新的、完全异步的连接器(;)。它支持
MySqlDataAdapter
自。发生这种情况是因为MySql.Data
连接器中的Async
方法实际上不是异步的。它们在网络I/O上阻塞,仅在DB操作完成时返回。(有关更详细的描述,请参阅。)在MySQL连接器中报告此问题
要获得真正的异步DB操作,您必须等待该错误被修复,或者切换到其他连接器
我一直在开发一个新的、完全异步的连接器(;)。它支持MySqlDataAdapter
since
private async void button1_Click_1(object sender, EventArgs e)
{
dataGridView1.DataSource = await ConnectionAsync.getTeacherSHS();
dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}