Gérer des taches asynchrones
Bonjour,
J'essaye de comprendre comment fonctionne l'implémentation de taches asynchrones en C# pour faire évoluer du code existant.(Visual studio 2017,FW 4.6.1)
Mon problème est le suivant :
Existant synchrone :
Des Moteurs sont gérés via un service windows qui expose une méthode < bool Etat_Moteur(nom du moteur)>, qui renvoi vrai ou faux en fonction de l'état du moteur. jusque là rien de compliqué.
Dans un client de ce service, je voudrais obtenir l'actualisation de l'état des moteurs d'une manière asynchrone, et j'ai découvert les Taches qui me paraissent être tout à fait adéquate pour gérer ça.
J'ai donc créé une méthode asynchrone chargé de cette actualisation : protected async task ActualisationMoteurs () sensé définir et appeler les taches d'actualisation de chaque moteur, de cette manière à priori Task<bool> test = Etat_Moteur("a1"); await test;.
Mais le code Task<bool> test = Etat_Moteur("a1"); n'est pas correct car l'intellisense me dit qu'il n'est pas possible de convertir un bool en task<bool>.
De plus, je lis que l'emploi d'une Task ne peut se faire que sur méthodes asynchrones.
J'ai donc cherché à encapsuler la méthode bool Etat_Moteur(nom du moteur) dans une méthode asynchrone
Code:
1 2 3 4
| protected async Task<bool> EtatMoteurAsync(string cible)
{
return await ServiceDistant.EtatCible(cible);
} |
Mais iSense me dit que bool ne contient pas de définition pour getawaiter... Bref ...
Comment fait-on pour créer des taches asynchrones appelant des taches synchrones quand ce sont des E/S (pour les calculs processeur, Task.run a l'air plus maléable...)
Un grand Merci par avance, et si tuto clair quelque part, je suis preneur car je ne trouve beaucoup de tuto, mais aucun de très efficient sur des exemple de base...
BSharp34