我的代码使用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不是线程安全的,所以在同一个上下文中执行mutliple异步调用应该抛出异常。
那么这里发生了什么?有没有人在devArt库中看到过这个?他们自己的支持论坛没有帮助。
答案 0 :(得分:0)
如果其他人看到这个或有相同的问题,我从DevArt确认他们不支持异步并且Async IQueryable扩展方法同步执行。