Асинхронное программирование в .NET: лучшие практики.
Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельный код. Зачастую, используя Async, программисты не только не решают проблемы, которые были с потоками, но и привносят новые. Дедлоки и рейсы никуда не пропадают — их просто становится труднее диагностировать.
Подробности:
http://msft.it/6273TjcY1