Извините, если это глупый вопрос (или дубликат).
У меня есть функция 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).
Мой коллега очень настойчив, и я начал сомневаться в себе. Мое понимание неверно?