我试图使用async/wait .NET功能进行Oracle查询.结果集非常大,需要大约5-10秒才能恢复.Window_Loaded挂起了UI线程,本质上我想使用async/wait在后台进行查询,然后使用结果更新数据视图.
这是Oracle驱动程序问题还是代码错误?例如,这是同步而不是异步完成的事情吗?我正在使用Oracle.ManagedDataAccessOracle可以从Oracle网站获得的最新信息.
async Task<DataTable> AccessOracleAsync()
{
DataTable dt;
using(OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString))
using (OracleCommand cmd = new OracleCommand(@"SELECT * FROM myTbl", conn))
{
await conn.OpenAsync();
using (var reader = await cmd.ExecuteReaderAsync())
{
dt = new DataTable();
dt.Load(reader);
}
}
return dt;
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
await AccessOracleAsync();
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,它仍然在用户界面陷入僵局:
async Task<DataView> AccessOracleAsync()
{
DataTable dt;
using (OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString))
using (OracleCommand cmd = new OracleCommand(@"SELECT * FROM myTbl", conn)) …Run Code Online (Sandbox Code Playgroud)