Асинхронный метод в C # всегда должен возвращать задачу и выглядит следующим образом:
public async Task method();
public async Task<bool> asyncMethod();
Когда он ничего не возвращает, поэтому void просто возвращает Task
и в любом другом случае Task<returntype>
Когда вы вызываете асинхронный метод, вы можете сделать 3 вещи:
// Result is now of type Task<object> and will run async with any code beyond this line.
// So using result in the code might result in it still being null or false.
var result = asyncMethod();
// Result is now type object, and any code below this line will wait for this to be executed.
// However the method that contains this code, must now also be async.
var result = await asyncMethod();
// Result is now type Task<object>, but result is bool, any code below this line will wait.
// The method with this code does not require to be async.
var result = asyncMethod().Result;
Таким образом, чтобы ответить на ваши вопросы.
Рассмотрите, является ли результат выполненного кодаиспользуется в другом месте в коде, потому что если вы не ожидаете его, результат будет потрачен впустую, так как он все еще будет нулевым.
То же самое происходит и в обратном направлении: при ожидании метода, который ничего не возвращает, ожидание обычно не требуется.