Почему я должен использовать await для метода для асинхронного запуска. Что если я не хочу ждать окончания метода, прежде чем продолжить? [Дубликат]

На этот вопрос уже есть ответ здесь:

Запустить и забыть с помощью async против «старого асинхронного делегата» 4 ответа

Я пролистывал документы MSDN весь день, и их философия асинхронного кодирования сбивает меня с толку. Насколько я понимаю, поток, который вызывает асинхронный метод, не будет заблокирован, если вызывается асинхронный метод. Тем не менее, async всегда сопряжен в примерах с await, который, по-видимому, сводит на нет асинхронность, делая так, что внешний метод ДОЛЖЕН ждать выполнения кода в любом случае. Должен ли я быть в состоянии вызвать асинхронный метод и затем продолжить выполнение внешнего метода?

Вот сценарий, с которым я столкнулся, более или менее:

void reportSomethingHappened(info)
    - Collect info
    - HTTP POST info to logging server (ie. mixpanel, sentry)

И здесь будет метод вызова:

void largerProcess
    if (whatever)
        reportSomethingHappened();
    bla;
    bla;

Насколько я понимаю, поскольку запросы POST могут выполняться асинхронно, я должен быть в состоянии превратить reportSomethingHappened () в асинхронный метод (с помощью AFAIK, ожидая веб-запроса и добавляя ключевое слово async).

Но метод более крупного процесса не должен ждать (т.е. ждать), чтобы завершился метод создания отчетов, чтобы выполнить бла-бла. Тем не менее, VS говорит мне, что с помощью асинхронного метода я могу либо его дождаться, либо произойдет синхронно, и заблокировать. Разве это не противоречит цели сделать это отдельно?

Как мне написать это так, чтобы reportSomethingHappened не блокировал выполнение более крупного процесса? (Что по своей сути смущает меня, потому что я думал, что это было все время асинхронно)

Ответы на вопрос(1)

Ваш ответ на вопрос