异步读取字段有任何好处吗?
假设我有以下情况:
SqlDataReader reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
try
{
if (reader.IsDBNull(COL_NAME))
{
continue;
}
user = new User();
user.Id = reader.GetInt32(COL_ID);
使用
IsDBNullAsync
和GetInt32Async
等会在现实世界中受益吗? 最佳答案
窥视了反射器之后,此处有趣的方法(GetFieldValueAsync<T>
,IsDBNullAsync
和internal
方法GetBytesAsync
)仅对CommandBehavior.SequentialAccess
场景执行“有趣”的代码。所以:如果您不使用它:不用担心-行数据已经在内存中缓冲了,并且Task<T>
是纯开销(尽管它至少将是一个已经完成的任务结果,即Task.FromResult<T>
-有效处理)通过await
,无需上下文切换)。
关于c# - 从SqlDataReader异步读取每个字段有什么好处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19894975/