これは私が今までに持っているものです... FillDataTable()
はうまく動作しますが、私は同期コードとたくさんの呼び出しをバックに戻すために問題が発生しています。彼らの多くは、進行中の人が終了する前に実行する準備が整いました。これをasync/await
に変換しようとしています。私が見た他の例からFillAsync()
をコピーしたので、フランケンコードかもしれません。非同期のDataTableコール
public static DataTable FillDataTable(string sql, Database _db) {
using (OleDbConnection conn = NewConnectionFromGivenDB(_db)) {
conn.Open();
using (OleDbCommand comm = new OleDbCommand(sql, conn)) {
using (OleDbDataAdapter da = new OleDbDataAdapter(comm)) {
using (DataTable dt = new DataTable()) {
da.Fill(dt);
}
conn.Close();
return dt;
}
}
}
}
public static async Task<DataTable> FillAsync(string sql, Database _db) {
return await Task.Run(() => { return FillDataTable(sql, _db); });
}
私はコードを返すことはありませんasync
方法、で次のように呼び出します。
DataTable dt = await FillAsync(sql, Database.Oracle);
誰かが間違っているのを見たり、より良い方法を提案したりできますか?
どのような状況でアプリケーションを実行していますか? WPF/ASP.NET/Formsのようなもの? – Caramiriel
@CaramirielアプリケーションはすべてWPF – markokstate