这是我到目前为止... 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