web-dev-qa-db-fra.com

Le nom de type ou d'espace de nom «async» est introuvable

J'essaie d'utiliser la méthode suivante dans une application WPF .NET Framework 4 Client Profile mais je reçois cette erreur:

Le nom de type ou d'espace de nom 'async' est introuvable

J'utilise

using System.Threading.Tasks;

Une idée de ce qui pourrait être faux? Merci d'avance

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

J'utilise VS 2010

16
GibboK

Eh bien, il y a deux choses:

  • Vous devez utiliser un compilateur C # 5, par exemple VS2012. Si vous utilisez VS2010, vous ne pouvez pas utiliser async. Compte tenu du message d'erreur, je soupçonne que vous utilisez la mauvaise version du compilateur.
  • Vous devez utiliser le Microsoft.Bcl.Async Package NuGet pour apporter le support de bibliothèque approprié pour .NET 4.
25
Jon Skeet

Dans mon cas, le type de retour manquait, le message était dû au code:

private async button1_Click(object sender, EventArgs e)

et devrait être

private async void button1_Click(object sender, EventArgs e)
13
Tomas Kubes

Si vous utilisez Visual Studio 2012+ et que vous cessez de taper au moment où vous obtenez une ligne de squiggley rouge, vous pouvez voir ce message d'erreur sur le mot clé async jusqu'à ce que vous ayez fini d'écrire la signature de la méthode.

Terminez d'écrire la signature de la méthode, assurez-vous qu'il n'y a pas d'autres problèmes de compilation et attendez environ une seconde pour que Visual Studio rattrape.

12
Jason