Асинхронность вызывает большие проблемы у многих, но выход есть — вот:
*️⃣ Во-первых, стоит прочитать весь блок статей на MSDN
*️⃣ Первый гигант
async/await — Stephen Cleary. Вводная статья*️⃣ Статья об устройстве async/await под капотом. Не обязательно заучивать всю машину состояний под
await, но тут как с блоком итератора yield - код пишется, а руки трясутся.*️⃣ На этом этапе может начаться каша в голове и встреча с
SynchronizationContext. Начать можно с этой статьи на MSDN. Но если она покажется душной, переходите к пункту 5.*️⃣ Второй гигант, и тоже Stephen. Я советую перечитать все статьи обоих, что можно найти. Но продолжая тему контекста синхронизации — эта статья крайне важна для тех, кто тренируется в консольных приложениях. Вопрос об асинхронности/многопоточности уходит после нее. И небольшой, но классный ответ на StackOverflow о
TaskScheduler.*️⃣ Но если вопрос все же не ушел — There is no thread. Также советую загуглить словосочетание из этой статьи — naturally-asynchronous operations.
*️⃣ Для закрепления пунктов 4,5,6 можно почитать о Task.Run (и комплексных случаях использования многопоточности и асинхронности). Внутри этого блока статей много полезных ссылок и на другие материалы.
*️⃣ Лучшие практики от Cleary. Кстати, у него есть книга по асинхронности, можно ознакомиться при желании.
*️⃣ Обработка исключений.
@csharp_ci
