Ответ 1
Они работают асинхронно, но последовательно. someOtherAsyncMethod
не будет вызываться до завершения someAsyncMethod
.
Если вы хотите запускать их параллельно, у вас есть несколько параметров
var taskA = MethodA();
var taskB = MethodB();
var a = await taskA;
var b = await taskB;
// or
var results = await Task.WhenAll(MethodA(), MethodB());
Последующий вопрос:
Я видел, что в прошлом приложения для родных приложений ожидали/асинхронно, как средство для освобождения потока пользовательского интерфейса, но есть ли другие причины, по которым этот дизайн был бы желателен?
В приложении ASP.NET вы захотите использовать это, чтобы позволить текущему потоку возвращаться в threadpool и обслуживать другие входящие запросы, в то время как MethodA
/MethodB
работает - ЕСЛИ эти методы делают true async I/O. Это в основном единственная причина, почему вы делаете это в приложении ASP.NET.
Вы также можете прочитать Стивена Клири: