Question

Ok j'ai en ce moment un objet contenant 3 cordes, ainsi que des setters et getters. Maintenant, j'ai deux questions -

D'abord, je suis nouveau sur C # est-il possible d'optimiser les méthodes suivantes et les rendre plus efficaces?

    void getSearchResults(object sender, RoutedEventArgs e)
    {
        string baseURL = "http://api.search.live.net/xml.aspx?Appid=<MyAPPID>&query=%22";
        string companyName = ((TaxiCompany)sender).CoName;
        string formatAndKey = "%22&sources=web";
        WebClient c = new WebClient();
        c.DownloadStringAsync(new Uri(baseURL + companyName + formatAndKey));
        c.DownloadStringCompleted += new DownloadStringCompletedEventHandler(findTotalResults);
    }


    //Parses search XML result to find number of results
    void findTotalResults(object sender, DownloadStringCompletedEventArgs e)
    {
        lock (this)
        {
            string s = e.Result;
            XmlReader reader = XmlReader.Create(new MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes(s)));
            String results = "";
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.Name.Equals("web:Total"))
                    {
                        results = reader.ReadInnerXml();
                        break;
                    }

                }
            }
        }
    }

En second lieu, j'initialiser un objet - nouvelle société Taxi (String name, Téléphone chaîne, résultats String). J'ai nom et le numéro et je dois appeler ce qui précède deux fonctions pour obtenir noOfResults afin que je puisse initialiser l'objet. , Il me semble cependant de se heurter à un tas de problèmes avec les gestionnaires d'événements.

Je l'ai surtout été un dev web, donc il pourrait y avoir quelque chose que je suis vraiment basique qui manque ici. J'ai un cadre de tripoter les méthodes de bing pour retourner un retour de chaîne au constructeur pourrait être e plus facile, mais pas tout à fait sûr de savoir comment.

Était-ce utile?

La solution

Tout d'abord, vous n'avez pas besoin du verrou sur la page principale. Alors, je dirais que votre bloc XmlReader doit être remplacé par la variation LINQ à XML appelé XDocument , qui vous permettra d'accéder au document XML avec une seule ligne élégante:

XDocument doc = XDocument.Parse(e.Result);

Une fois que vous avez le document, vous pouvez vérifier si elle contient un XNode .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top