基本的事件处理程序问题

时间:2010-11-20 19:47:24

标签: windows-phone-7 event-handling bing-api

好的,我现在有一个包含3个字符串的对象,以及setter和getter。现在我有两个问题 -

首先,我是C#的新手有没有办法优化以下方法并使它们更有效率?

    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;
                    }

                }
            }
        }
    }

其次,我正在初始化一个对象 - 新的Taxi公司(String name,String Phone,String Results)。我有名字和号码,我需要调用上面两个函数来获取noOfResults,以便我可以初始化对象。但是,我似乎遇到了一些事件处理程序的问题。

我主要是一个网络开发者,所以我可能会遗漏一些非常基本的东西。我有一种感觉设置bing方法将字符串返回给构造函数可能是最简单的,但不太确定如何。

1 个答案:

答案 0 :(得分:1)

首先,您不需要主页上的锁定。然后,我会说你的XmlReader块应该被替换为名为XDocument的LINQ-to-XML变体,这将允许你用一条优雅的行来访问XML文档:

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

获得文档后,您可以检查文档是否包含特定的XNode