none
ajouter un espace de noms RRS feed

  • Question

  • Bonjour,

    Je souhaiterais compiler le code suivant

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    // Add a using directive and a reference for System.Net.Http;
    using System.Net.Http;
    
    namespace AsyncFirstExample
    {
        public partial class MainWindow : Window
        {
            // Mark the event handler with async so you can use await in it.
            private async void StartButton_Click(object sender, RoutedEventArgs e)
            {
                // Call and await separately.
                //Task<int> getLengthTask = AccessTheWebAsync();
                //// You can do independent work here.
                //int contentLength = await getLengthTask;
    
                int contentLength = await AccessTheWebAsync();
    
                resultsTextBox.Text +=
                    String.Format("\r\nLength of the downloaded string: {0}.\r\n", contentLength);
            }
    
    
            // Three things to note in the signature:
            //  - The method has an async modifier. 
            //  - The return type is Task or Task<T>. (See "Return Types" section.)
            //    Here, it is Task<int> because the return statement returns an integer.
            //  - The method name ends in "Async."
            async Task<int> AccessTheWebAsync()
            { 
                // You need to add a reference to System.Net.Http to declare client.
                HttpClient client = new HttpClient();
    
                // GetStringAsync returns a Task<string>. That means that when you await the
                // task you'll get a string (urlContents).
                Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
    
                // You can do work here that doesn't rely on the string from GetStringAsync.
                DoIndependentWork();
    
                // The await operator suspends AccessTheWebAsync.
                //  - AccessTheWebAsync can't continue until getStringTask is complete.
                //  - Meanwhile, control returns to the caller of AccessTheWebAsync.
                //  - Control resumes here when getStringTask is complete. 
                //  - The await operator then retrieves the string result from getStringTask.
                string urlContents = await getStringTask;
    
                // The return statement specifies an integer result.
                // Any methods that are awaiting AccessTheWebAsync retrieve the length value.
                return urlContents.Length;
            }
    
    
            void DoIndependentWork()
            {
                resultsTextBox.Text += "Working . . . . . . .\r\n";
            }
        }
    }
    
    
    

    J'ai bien fait l'ajout de l'espace de nom System.Net.Http par la directive

    using System.Net.Http;

    Mais j'obtiens un message qui me dit que le type ou le nom d'espace Http n'existe pas dans l'espace de nom System.Net(une assembly est elle manquante?).

    J'ai pourtant fait :"ajouter une reference "+ Microsoft .Net

    Je vous remercie de bien vouloir m'aider à arranger cette situation bloquante .

    Bien cordialement.


    developement

    lundi 23 mars 2015 12:21

Réponses

Toutes les réponses

  • Bonjour

    Apparemment vous êtes dans une application WPF :

    Si votre projet est en .Net 4.5, il faut ajouter en référence "System.Net.Http".

    Comme HttpClient est apparu avec .Net 4.5, si vous êtes en .Net 4.0, vous n'aurez pas accès à cette DLL, mais il existe un Package Nuget HttpClient pour le .Net 4.0 (et d'autres plateformes antérieures à .Net 4.5) : https://www.nuget.org/packages/Microsoft.Net.Http

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    lundi 23 mars 2015 13:08
  • Bonjour,

    Je travaille avec Visual Studio 10 et n'ai pas accès dans le menu outils à l'element Library Package Manager qui permet d'aller vers l'élement Package Manager Console .

    Comment puis je donc faire pour installer la dll Microsoft.Net.Http.

    Merci de votre réponse.

    Cordialement.


    developement


    mardi 24 mars 2015 16:32
  • Bonjour,

    Houla !

    De mémoire pour VS2010 c'est une extension qui fallait installer, donc allez dans le gestionnaire d'extensions et recherchez l'extension Nuget.

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    mardi 24 mars 2015 16:35
  • Bonjour et merci de ta réponse.

    J'ai bien la possibilité d'ajouter l'espace de noms System.Net.Http mais au niveau du code, je vois toujours souligné en rouge le mot clé "async" avec le message suivant

    "   le type ou le nom d'espace de nom  async est   introuvable. Une directive using ou une référence d'assembly est elle manquante?".

    Je vous informe que j'ai bien ajouté la reference System.Net.

    Merci encore à vous de votre aide.

    Cordialement.


    developement


    lundi 30 mars 2015 11:12
  • Bonjour,

    En effet vous êtes sous VS2010 !

    Le pattern await/async n'est utilisable qu'a partir de .Net 4.5 et donc VS2013.

    Dans votre cas vous devrez utiliser les tâches avec des méthodes continuation selon le pattern TPL. Voir la documentation https://msdn.microsoft.com/fr-fr/library/dd997423(v=vs.110).aspx si nécessaire.

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    lundi 30 mars 2015 11:33