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

VB.NET Discussion :

portabilité de variable Async [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Points : 21
    Points
    21
    Par défaut portabilité de variable Async
    Bonjour,
    J'essaie de comprend comment fonctionne HttpClient, mais dans le code en annexe j'arrive pas à récupérer le contenu de la variable "retour" ni "urlContents" en dehors de la fonction. pq?

    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
    Imports System.Net.Http.HttpClient
     
    Public Class Form1
        Public retour As String
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Call AccessTheWebAsync()
            MsgBox(retour)
        End Sub
     
     
     
        Async Function AccessTheWebAsync() As Task(Of String)
            Using client As New Net.Http.HttpClient()
     
                Dim getStringTask As Task(Of String) = client.GetStringAsync("https://www.exchange-rates.org/fr/historique/usd-eur")
                Dim urlContents As String = Await getStringTask
                retour = urlContents
                Return urlContents
     
            End Using
        End Function
    End Class

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private async Sub Button1_Click
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox(await AccessTheWebAsync())
    un méthode async ou une task quand on les appelles sont exécutées le plus souvent sur un autre thread, donc ton code passe à la ligne d'après (msgbox ici) alors que retour n'a pas encore été setté
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    merci mais ça marche pas !!

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 128
    Points : 1 638
    Points
    1 638
    Par défaut
    Ton code fonctionne (bien que simplifiable en nombre de lignes), juste que le contenu de retour n'est pas affichage dans un msgbox (si tu mets un point d'arrêt sur la ligne du msgbox, tu verras que retour contient bien ton info), met le résultat dans un textbox sinon

    Sinon, ta fonction étant de type Async, pour avoir le résultat directement, il faut l'utiliser avec Await et il faut que la fonction dans laquelle est appelé soit aussi Async

    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
    Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim resultat = Await AccessTheWebAsync()
        TextBox1.Text = retour
    End Sub
     
    Public retour As String
     
    Async Function AccessTheWebAsync() As Task(Of String)
        Using client As New Net.Http.HttpClient()
            Dim urlContents As String = Await  client.GetStringAsync("https://www.exchange-rates.org/fr/historique/usd-eur")
            retour = urlContents
            Return urlContents
     
        End Using
    End Function

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    en effet avec le visionneur en mode débogage je vois bien le contenu, par contre le textbox ou le label (car j'ai essayé aussi) reste vide.(peut-être que je dépasse les 32737 caractères autorisés) pas de message d'erreur (compilation et exécution). il n'existe pas une autre approche pour récupérer du contenu d'une page web. merci

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 128
    Points : 1 638
    Points
    1 638
    Par défaut
    j'ai testé le code que j'ai mis, et j'ai bien l'affichage (je n'ai pas regardé si j'avais tout le code de la page)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/12/2023, 11h27
  2. [Débutant] CLASSE VB.NET portabilité des variables
    Par garnier54 dans le forum VB.NET
    Réponses: 1
    Dernier message: 21/02/2015, 12h51
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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