Mots clés async / wait non disponibles dans .net 4.0

Je voudrais utiliser async / wait en C # 4.0 et j’ai installé le paquet suivant:

http://www.nuget.org/packages/Microsoft.Bcl.Async/

Le problème est que je n’ai pas de mots clés asynchrones / wait disponibles.

J’utilise VS2010 avec SP1.

Merci.

Vous n’allez pas obtenir une meilleure réponse que celle de Jon Skeet .

Pour ce faire, le seul moyen pris en charge consiste à utiliser VS2012 avec Microsoft.Bcl.Async .

Il est très difficile de faire fonctionner async avec async / await . Il y avait un vieux paquet Async CTP (qui contenait de nombreux bogues qui n’avaient jamais été corrigés) et qui servait de “complément” / “remplacement partiel” à VS2010. Cependant, ce package n’a jamais bien fonctionné avec les mises à jour de VS2010. Donc, vous devez d’abord trouver une version de l’un des anciens programmes d’installation de CTP, jouer avec l’installation de mises à jour de VS, puis voir si le CTP fonctionne. Si vous avez déjà installé toutes vos mises à jour VS2010, aucune version du CTP ne fonctionnera. Je pense qu’une fois que vous avez trouvé une situation de mise à jour où vous pouvez installer un CTP fonctionnel, vous pouvez installer les autres mises à jour.

Après tout ce travail, vous aurez toujours une implémentation async corrigée par les bogues (et certainement non optimisée).

Vous pouvez également faire ce que Jon Skeet a suggéré et télécharger la version gratuite de VS2012 Express avec Microsoft.Bcl.Async et disposer d’une solution entièrement prise en charge.

Async/Await ont été introduits avec C# 5.0 et .NET Framework 4.5

plus d’informations ici:

Programmation asynchrone avec async et attente (C # et Visual Basic)

Programmation asynchrone en C # 5.0 utilisant async et wait

Si vous utilisez Framework 4 comme je le fais en entreprise, vous pouvez utiliser d’autres solutions de contournement. Vous pouvez utiliser un package NuGet qui vous permet d’utiliser ces fonctionnalités.

Utilisation de async / wait sans .NET Framework 4.5

Installez-le simplement à partir du gestionnaire de paquets NuGet:

Package d’installation Microsoft.Bcl.Async

Extrait de la galerie NuGet :

Ce package permet aux projets Visual Studio 2012 d’utiliser les nouveaux mots-clés “async” et “wait”. Ce package inclut également des méthodes d’extension basées sur des tâches qui permettent d’utiliser certaines des API asynchrones existantes avec les nouveaux mots-clés de langue. Les projets Windows Phone Silverlight 8 peuvent utiliser ce package pour accéder aux méthodes d’extension async pour les types de mise en réseau.

J’ai écrit un plugin .NET 4.5 utilisant async pour une application .NET 4.0, et à ma grande surprise, cela a fonctionné!

Je pense que cela a fonctionné car j’ai installé .NET 4.5, qui a remplacé le runtime .NET 4 par un nouveau, qui est utilisé à la fois pour .NET 4.0 et .NET 4.5. Ensuite, mon plugin a été chargé avec la reflection en utilisant Assembly.Load(...) ou similaire. J’ai essayé à la fois async/await et Environment.CurrentManagedThreadId (une propriété .NET 4.5), et les deux ont fonctionné.

Ainsi, si l’installation de .NET 4.5 est une option (c’est-à-dire ne prenant pas en charge Windows XP), vous pouvez éventuellement utiliser un mélange en chargeant la partie .NET 4.5 d’une application via reflection, en laissant éventuellement votre partie 4.5 implémenter une interface 4.0. Toutefois, si vous écrivez vous-même l’application, une solution beaucoup plus simple consisterait à passer à .NET 4.5 pour l’ensemble du projet.