相关疑难解决方法(0)

Oracle托管驱动程序可以正确使用异步/等待吗?

我试图使用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)

.net c# oracle async-await odp.net-managed

22
推荐指数
3
解决办法
6272
查看次数

标签 统计

.net ×1

async-await ×1

c# ×1

odp.net-managed ×1

oracle ×1