Посвящается тем 45% .NET разработчиков, что до сих пор сидят на фремворках 2.0-3.5.
Да, вы не ослышались. async и await во втором дотнете. Но всё по-порядку.
Зачем?
В какой-то момент мне надоело вручную возиться с написанием асинхронного кода. Async/awat выглядели слишком вкусными, чтобы не попробовать. Зная, что Microsoft при добавлении новых возможностей в язык и компилятор не привязывает их жёстко к фреймворку (так, extension-методы и LINQ отлично можно использовать во втором .NET, если где-нибудь объявить System.CompilerServices.ExtensionAttribute) и видя Async CTP, добавляющего возможность использования async/await в 2010-ую студию при использовании в качестве целевого фреймворка .NET 4.0, я подумал, а почему бы и нет?