Компания Microsoft выпустила бета-версию библиотеки, позволяющей использовать async/await в проектах, нацеленных на предыдущие версии платформ.
В частности, при использовании Visual Studio 2012 в качестве среды разработки, поддерживаются:
- .NET Framework 4.0 (с установленным KB2468871);
- Silverlight 4 и выше;
- Windows Phone 7.5;
- Portable Class Libraries для указанных выше платформ.
Для установки необходимо в проект добавить библиотеку Microsoft.Bcl.Async. Сделать это можно следующей командой в консоли NuGet:
Install-package Microsoft.Bcl.Async –pre
Теперь следующий пример без ошибок будет компилироваться и работать под .NET 4:
namespace ConsoleApplication1
{
using System;
using System.Net;
using System.Threading.Tasks;
public class TestDataSource
{
public async Task<string> LoadPageAsync(string url)
{
var client = new WebClient();
string page = await client.DownloadStringTaskAsync(url);
Console.WriteLine("{0} downloaded.", url);
return page;
}
}
class Program
{
static void Main(string[] args)
{
var dataSource = new TestDataSource();
var tasks = new Task<string>[3] {
dataSource.LoadPageAsync(@"http://google.com"),
dataSource.LoadPageAsync(@"http://bing.com"),
dataSource.LoadPageAsync(@"http://ya.ru")
};
Task.WaitAll(tasks);
Console.WriteLine("Press any key...");
Console.ReadKey(intercept: true);
}
}
}