S>>Верно. Но я бы не стал называть это "синхронно". Все-таки последовательно, цепочка ведь. MP>Ну тут просто как противоположность "асинхронному", а если последовательно, то наоборот — параллельно.
MP>К вопросу "зачем": MP>как я понял, await methodAsync() выполняется в том же потоке, отложенно,
Тут не все так просто. Начинается выполнение в том же потоке, но за разрывом выполнения дальше не факт, что в том же. Т.е. слева справа от await начинает работу тот же поток, потом внутри может быть разрыв выполнения, а слева от await можем получить другой поток. Но тоже не факт. Можем другой, а можем тот же. Зависит от обстоятельств.
MP>а Task.Run() дёргает ThreadPool для выделения нового потока...
Не обязательно нового. Просто другого. В этом случае выполнение пойдет "параллельно" с текущим потокм.
MP>Пока писал ответ понял, что не так формулирую. Мне нужно "дёрнуть" асинхронные вызовы (все три) без выделения новых потоков. И продолжить работу. MP>Но! Мне важен результат выполнения.
Возможность этого зависит от того, как написаны те три метода. Если у них стоит просто return Task.FromResult(1); то можно быть уверенным что выполнение их закончится в том же потоке, что и началось. А если у них стоят разрывы выполнения, то может произойти переключение.
В общем, если вы запустите эти три метода в параллельном потоке и вызовете ожидание (Task.Run(...).Result), то результат вы получите в текущем потоке. Но для выполнения этих методов будет выделен как минимум один левый поток.