1

さて、今、私はセッターとゲッターとともに、3つのストリングを含むオブジェクトを持っています。今私は2つの質問があります-

まず、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;
                    }

                }
            }
        }
    }

次に、オブジェクトを初期化しています-新しいタクシー会社(文字列名、文字列電話、文字列結果)。名前と番号を取得しました。オブジェクトを初期化できるように、上記の2つの関数を呼び出してnoOfResultsを取得する必要があります。ただし、イベントハンドラーで多くの問題が発生したようです。

私は主にWeb開発者だったので、ここで欠けている本当に基本的なものがあるかもしれません。文字列をコンストラクターに戻すようにBingメソッドを設定するのが最も簡単かもしれませんが、その方法はよくわかりません。

4

1 に答える 1

1

まず、メインページのロックは必要ありません。次に、XmlReaderブロックをXDocumentと呼ばれるLINQからXMLへのバリエーションに置き換える必要があります。これにより、1行のエレガントな行でXMLドキュメントにアクセスできるようになります。

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

ドキュメントを入手したら、特定のXNodeが含まれているかどうかを確認できます。

于 2010-11-20T20:12:32.403 に答える