2016-10-27 4 views
0

ではない私は、この特定のタイプを教えている教師のリストを取得したいです私のDataGridViewC#MySQLのexecutenonqueryasyncが非同期

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; 
} 

は私の問題は、コールが他のI/Oをブロックしているボタンをクリックした後、私はそれが行われるタスクを待っているため、他のテキストボックスに入力しているように見える傾けることです。私はそれが非同期だと思った、誰かが説明することができますか?

答えて

1

これは、MySql.DataコネクタのAsyncメソッドが実際には非同期ではないために発生します。それらはネットワークI/O上でブロックし、DB操作が完了したときにのみ戻る。 (詳細については、this question and its top answerを参照してください。)MySQL bug #70111はMySQLコネクタでこの問題を報告します。

真に非同期のDB操作を取得するには、そのバグが修正されるまで待つか、別のコネクタに切り替える必要があります。

私は新しい完全非同期コネクタ(MySqlConnector on NuGet; source on GitHub)を開発しています。残念ながら、まだDataTableをサポートしていないので、コードを書き換えてもはやMySqlDataAdapterを使用しない限り、この特定の問題は解決しません。