Извините, если это глупый вопрос (или дубликат).
У меня есть функция A
:
public async Task<int> A(/* some parameters */)
{
var result = await SomeOtherFuncAsync(/* some other parameters */);
return (result);
}
У меня есть другая функция B
, вызывающая A
, но не использующая возвращаемое значение:
public Task B(/* some parameters */)
{
var taskA = A(/* parameters */); // #1
return (taskA);
}
Обратите внимание, что B
не объявлен async
и не ожидает вызова A
. Вызов на A
не является вызовом "забыл и забыл" - B
вызывается C
следующим образом:
public async Task C()
{
await B(/* parameters */);
}
Обратите внимание, что на # 1 нет await
. У меня есть сотрудник, который утверждает, что это делает вызов A
синхронным, и он продолжает придумывать журналы Console.WriteLine
, которые, казалось бы, подтверждают его точку зрения.
Я попытался указать, что только потому, что мы не ждем результатов внутри B
, цепочка задач ожидается, и характер кода внутри A
не меняется только потому, что мы его не ждем. Поскольку возвращаемое значение из A
не требуется, нет необходимости ждать задачи на месте вызова, пока кто-то в цепочке ожидает ее (что происходит в C
).
Мой коллега очень настойчив, и я начал сомневаться в себе. Мое понимание неверно?