Bonjour,

Je fais une application qui doit communiquer avec mon API. Pour cela j'utilise HttpWebRequest, voici 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
private string API_Query(string url)
    {
        HttpWebRequest requete = (HttpWebRequest)HttpWebRequest.Create(url);
        requete.Method = "POST";
        requete.ContentType = "application/x-www-form-urlencoded";
 
        requete.BeginGetRequestStream(DebutReponse, requete);
        return null;
    }
 
    private void DebutReponse(IAsyncResult resultatAsynchrone)
    {
        HttpWebRequest requete = (HttpWebRequest)resultatAsynchrone.AsyncState;
        Stream postStream = requete.EndGetRequestStream(resultatAsynchrone);
 
        string donneesAEnvoyer = "username=" + clientInfo_.name_ + "&" + "password=" + clientInfo_.password_;
 
        string lol = donneesAEnvoyer;
        byte[] tableau = Encoding.UTF8.GetBytes(donneesAEnvoyer);
        postStream.Write(tableau, 0, donneesAEnvoyer.Length);
        postStream.Close();
        requete.BeginGetResponse(FinReponse, requete);
    }
 
    private void FinReponse(IAsyncResult resultatAsynchrone)
    {
        try
        {
            HttpWebRequest requete = (HttpWebRequest)resultatAsynchrone.AsyncState;
            WebResponse webResponse = requete.EndGetResponse(resultatAsynchrone);
            Stream stream = webResponse.GetResponseStream();
 
            StreamReader streamReader = new StreamReader(stream);
            string reponse = streamReader.ReadToEnd();
            stream.Close();
            streamReader.Close();
            webResponse.Close();
            CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => MessageBox.Show("Connection succeed"));
        }
        catch (WebException e)
        {
            if (e.Response != null)
            {
                HttpWebResponse aResp = e.Response as HttpWebResponse;
 
                if (aResp != null)
                {
                    CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() => MessageBox.Show("Connection failed"));
 
                }
                else
                {
 
                }
            }
        }
    }
Je voudrais afficher un message dans le thread UI si la connection réussie ou fail. Le problème est que je dois utiliser la fonction CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync et je ne sais pas vraiment comment ça fonctionne.
Mon compilateur me dit:
Dans la mesure où cet appel n'est pas attendu, l'exécution de la méthode actuelle continue avant la fin de l'appel. Envisagez d'appliquer l'opérateur 'await' au résultat de l'appel.
Je ne sais pas ou mettre l'opérateur await. J'ai compris le principe, le fait d'attendre que ma fonction se termine avant de pouvoir continuer est l'utilité de mettre l'opérateur await. J'ai essayé de le mettre à plusieurs endroit sans succès.

Merci de votre aide.