在同一个SqlDataReader上混合异步和非异步调用是否有任何已知问题?

时间:2015-02-17 16:09:52

标签: c# sql sql-server asynchronous

比如说我打开一个连接异步。我执行我的读者异步。我开始正常使用我的阅读器:

if (await reader.NextResultAsync())
            {
                while (await reader.ReadAsync())
                {
                   //work
                }
              }

然后我在同一个读者上做了一个非异步版本:

if (reader.NextResult())
            {
                while (reader.Read())
                {
                    //Work
                 }
             }

这可能导致任何已知问题吗?我正在审查一些遗留代码,这显然是不一致的;但它是否会在运行时引起任何问题混合它们?

谢谢,

1 个答案:

答案 0 :(得分:1)

这不会导致任何问题。

事实上,这并不总是一个坏主意。异步调用比同步调用具有更多开销。以异步方式获取读取器和结果集是合理的(因为这可能需要很长时间),然后同步读取行(因为每行可能很快就可用)。