Не удалось найти имя или имя пространства имен async

Я пытаюсь использовать следующий метод в приложении WPF .NET Framework 4 Client Profile, но я получаю эту ошибку:

Не удалось найти тип или имя пространства имен async

Я использую

using System.Threading.Tasks;

Любая идея, что может быть неправильным? Спасибо заранее

private async Task SumPageSizesAsync()
{
    HttpClient client = new HttpClient();
    Task<byte[]> getContentsTask = client.GetByteArrayAsync(url);
    byte[] urlContents = await getContentsTask;   
}

Я использую VS 2010

Ответ 1

Ну, есть две вещи:

  • Вам нужно использовать компилятор С# 5, например. VS2012. Если вы используете VS2010, вы не можете использовать async. Учитывая сообщение об ошибке, я подозреваю, что вы используете неправильную версию компилятора.
  • Вам необходимо использовать Microsoft.Bcl.Async пакет NuGet, чтобы добавить соответствующую библиотечную поддержку .NET 4.

Ответ 2

Если вы используете Visual Studio 2012+ и перестаете набирать момент, когда вы получаете красную строку squiggley, вы можете увидеть это сообщение об ошибке в ключевом слове async, пока не закончите писать подпись метода.

Завершите запись сигнатуры метода, убедитесь, что нет других проблем с компилятором, и подождите секунду или около того, чтобы Visual Studio могла догнать.

Ответ 3

В моем случае тип возврата отсутствовал, сообщение было причиной по коду:

private async button1_Click(object sender, EventArgs e)

и должен быть

private async void button1_Click(object sender, EventArgs e)