私は非同期操作の専門家ではなく、誰かが問題を指摘するのを手伝ってくれることを望んでいます。
私のメソッドの 1 つで、ラッパーを作成しました。
public static async Task<int> ExecuteNonQueryRawSQLAsync(string sqlStatement)
{
int _returnValue = -1;
using (SqlConnection _conn = new SqlConnection("connectionString"))
{
using (SqlCommand _comm = new SqlCommand())
{
_comm.Connection = _conn;
_comm.CommandText = sqlStatement;
_comm.CommandType = CommandType.Text;
// other codes on setting parameter
try
{
await _conn.OpenAsync();
_returnValue = Convert.ToInt32(await _comm.ExecuteNonQueryAsync());
}
catch (Exception)
{
throw;
}
}
}
return _returnValue;
}
私のUIでは、このようにメソッドを呼び出します。
int _recordsAffected = await MyClass.ExecuteNonQueryRawSQLAsync("INSERT....");
本当に機能しているかどうかをテストするために、接続文字列に無効なデータベース サーバー アドレスを指定して、例外がスローされるまで検索を続けようとしました。
プログラムがまだ接続している間、UI がフリーズします。ラッパーに欠けているものは何ですか? または、他に必要な初期化が必要ですか?