У меня очень похожий код (я немного упростил код, чтобы продемонстрировать суть поведения, которое я пытаюсь выяснить).Зачем мне нужен этот метод Async?
public async System.Threading.Tasks.Task<bool> IsNumberOdd(int numToTest)
{
if (numToTest % 2 == 0)
{
return false;
}
else
{
return true;
}
}
Если я уйду от async
на ключевое слово, я получаю жалобы о не в состоянии бросить bool
к Task<bool>
. Я предполагаю, что здесь присутствует синтаксический сахар. Глядя на IL (я не очень хорошо знаком с IL), похоже, что ключевое слово async вызывает выполнение задачи, а затем возвращаемое значение является результатом задачи. Я правильно понимаю это?
Кстати, если это обман, или если есть какие-то сообщения в блоге, которые обсуждают это, не стесняйтесь указывать на него и закрывать это. Я не пытаюсь пропустить свой репутация; Я пытаюсь понять, что происходит с этим кодом.
EDIT:
Для всех тех, кто спрашивал «почему этот метод асинхронный?» - потому что я пытался построить небольшой и простой пример кода, чтобы продемонстрировать вопрос. Я должен был также добавить пример кода вызова, но я пытался сохранить код как можно малым и простым.
Я думаю, что ответ Джона Скита подходит к вашему вопросу отлично. – slugster
Если нет ничего асинхронного действия, но вам нужно вернуть 'Task' для подписи, тогда вам может понадобиться 'Task.FromResult (значение T)', то есть 'return Task.FromResult (true);' –
Спасибо @ slugster - именно то, что я хотел знать. Мои навыки в поисковых системах не помогли мне :) –