Ich fand dieses Beispiel mit Async/erwarten Sachen in einem Buch. Könnte mir bitte jemand sagen, was ist der Vorteil von asynchronen Methoden wie im folgenden Beispiel?Warum auf eine asynchrone Methode mitten in einer Methode warten?
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();
}
}
Ich kann einfach meinen Kopf nicht um diesen zu wickeln. Die Art, wie ich verstehe, warten Blöcke, bis die Methode aufgerufen (in diesem Fall ExecuteReaderAsync und ReadAsync) zurückgibt. Was ist der Zweck, eine asynchrone Methode aufzurufen und sofort in der Mitte des Codes zu blockieren, ohne tatsächlich etwas zwischen dem Aufruf der asynchronen Methode und dem Punkt zu machen, an dem das Ergebnis an den Aufrufer zurückgegeben wird? Wie ist es schneller oder effizienter als einfach dies zu tun?
....
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
.....
Durch das Warten auf die Beendigung der asynchronen Methode können sie asynchronen Code wie synchronen Code behandeln. Dies war lange Zeit ein Problem in der Softwareentwicklung, und die Art, wie der Autor sich damit auseinandersetzte, ist eine von vielen. Es ist nicht meine bevorzugte Art, aber dieses Beispiel kann auch sehr alt sein. – deltree