我在书中使用async/await东西找到了这个例子.可以请有人告诉我等待异步方法有什么好处,如下例所示?
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("SELECT * FROM People", connection);
await connection.OpenAsync();
SqlDataReader dataReader = **await** command.ExecuteReaderAsync();
while (**await** dataReader.ReadAsync())
{
string formatStringWithMiddleName = "Person ({0}) is named {1} {2} {3}";
string formatStringWithoutMiddleName = "Person ({0}) is named {1} {3}";
if ((dataReader["middlename"] == null))
{
Console.WriteLine(formatStringWithoutMiddleName,
dataReader["id"],
dataReader["firstname"],
dataReader["lastname"]);
}
else
{
Console.WriteLine(formatStringWithMiddleName,
dataReader["id"],
dataReader["firstname"],
dataReader["middlename"],
dataReader["lastname"]);
}
}
dataReader.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
我无法绕过这个.我理解的方式是等待阻塞,直到调用的方法(在这种情况下,ExecuteReaderAsync和ReadAsync)返回.调用异步方法并在代码中间立即阻塞有什么意义,而不是在调用异步方法和结果返回给调用者之间实际执行任何操作?如何简单地执行此操作更快还是更有效?
....
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
.....
Run Code Online (Sandbox Code Playgroud)