Я весь день наливал документы MSDN, и их философия асинхронного кодирования меня сбивает с толку. Как я понимаю, поток, который вызывает метод async, не будет заблокирован, если вызывается метод async. Тем не менее, async всегда сопрягается с примерами с ожиданием, что, как представляется, отрицает асинхронность, делая так, чтобы внешний метод должен был ждать выполнения кода в любом случае. Должен ли я быть в состоянии вызвать метод async, а затем продолжить выполнение внешнего метода?
Это сценарий, с которым я столкнулся, более или менее:
void reportSomethingHappened(info)
- Collect info
- HTTP POST info to logging server (ie. mixpanel, sentry)
И здесь был бы метод вызова:
void largerProcess
if (whatever)
reportSomethingHappened();
bla;
bla;
Насколько я понимаю, поскольку запросы POST могут выполняться асинхронно, я должен иметь возможность сделать reportSomethingHappened() в async-метод (by AFAIK, ожидание web-запроса и добавление ключевого слова async).
Но для метода largeProcess не нужно ждать (т.е. Ждать) метода отчетности для завершения, чтобы выполнить bla bla. Тем не менее, VS говорит мне, что с помощью метода async я могу либо ждать его, либо произойдет синхронно и блокировать. Разве это не побеждает цель делать это отдельно?
Как написать это, чтобы reportSomethingHappened не блокировал выполнение largeProcess? (Что по сути меня смущает, потому что я думал, что это была точка асинхронности)