async/await для .NET 4, Silverlight 4 и Windows Phone 7.5

Компания 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);
        }
    }
}

Добавить комментарий