IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Probleme avec fonction assynchrone


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Par défaut Probleme avec fonction assynchrone
    Bonjour,
    je m'essaye aux fonctions asynchrones
    mon exemple est trés simple mais j'ai un message d'erreur :
    Impossible de convertir implicitement le type 'string' en 'System.Threading.Tasks.Task<string>'
    Je comprend bien que la fonction veut retourner un objet Task mais moi je veux retourner un string
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    using System;
    using System.Threading.Tasks;
     
    namespace async_and_await;
     
        class Program
        {
            Task<string> GetWebPageAsync()
            {
            string? s = "code html";
            return s; //Impossible de convertir implicitement le type 'string' en 'System.Threading.Tasks.Task<string>'
            }
     
            async  Task<string> Test()
            {
     
                    string html = await GetWebPageAsync();
                    Console.WriteLine(html);
                    return html;
     
            }
            static void Main(string[] args)
            {
     
     
     
            }
        }
    c'est le
    return s
    qui pose probleme
    Merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Bonjour,

    Une fonction asynchrone renvoie toujours un objet Task, d'ailleurs tu le vois bien avec la fonction Test.

    Donc je ne comprends pas trop ce que tu cherches à faire.
    Si tu veux que le code appelant récupère directement le résultat (et non la tâche), il faut utiliser await ou .Result:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var result = Test().Result;
    var result2 = await Test();
    Mais tel que ton code est écrit, la fonction GetWebPageAsync() n'est pas asynchrone, et le type renvoyé (ici une chaine) ne correspond pas à ce qui est indiqué dans la définition (Task<string>). D'où l'erreur de compilation.

    Tatayo.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Par défaut
    Merci pour votre réponse
    mon but est simplement de retourner le string "code html" en mode asynchrone pour plus tard retourner le contenu d'une page html

    mon nouveau code, qui fonctionne (enfin pas d'erreurs)
    est ce que ce code avec les 2 méthodes est bien asynchrone?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    using System;
    using System.Threading.Tasks;
     
    namespace async_and_await;
     
        class Program
        {
            public static async Task<string> GetWebPageAsync()
            {
            string? s = "code html";
            return await  Task.FromResult(s);
            }
     
            public static async void Test()
            {
     
                    string html = await GetWebPageAsync();
                    Console.WriteLine(html);
     
            }
            static void Main(string[] args)
            {
     
            Test();
     
     
            }
        }
    merci

Discussions similaires

  1. [Mail] probleme avec fonction mail() !!!
    Par H-bil dans le forum Langage
    Réponses: 6
    Dernier message: 19/06/2006, 23h45
  2. C++ - Probleme avec fonction virtuelle
    Par vdumont dans le forum C++
    Réponses: 1
    Dernier message: 20/03/2006, 20h49
  3. probleme avec fonctions
    Par Burinho dans le forum C
    Réponses: 8
    Dernier message: 29/12/2005, 21h28
  4. Réponses: 17
    Dernier message: 24/03/2005, 12h24
  5. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo