【发布时间】:2015-07-30 01:22:36
【问题描述】:
我的代码使用 devArt 的 dotConnect 连接到 Oracle 数据库。基本上是这样的:
using (var context = new MyContext(myConnectionString)
{
var data = (some lync query).ToListAsync();
var data2 = (some lync query).ToListAsync();
etc etc....
await Task.WhenAll(new Task[] {data, data2....});
}
基本上我会异步执行 6 或 7 个 lync 查询,并等待它们全部结束后再继续。但是,当我单步执行代码时,我看到的是 ToListAsync 似乎正在同步运行。执行不会在一两秒钟内移至下一行(这些是大查询)。如果我只是在 Task.Whenall 中放置一个断点,VS 会等待 10 秒左右,然后我才会遇到该断点,并且所有任务都已完成。此外,在研究这一点时,我发现 DBContext 不是线程安全的,因此在同一上下文中执行多个异步调用应该会引发异常。
那么这里发生了什么?有人在 devArt 库中看到过这个吗?他们自己的支持论坛没有帮助。
【问题讨论】:
-
查询真的可以在同一个连接中并行化吗?
标签: async-await entity-framework-6 devart