0

Windows Phoneでオブジェクトのリストを取得し、データバインディングを使用してリストボックスに表示します。一部の画像のURLは無効であるため、すべてのオブジェクトがリストに追加された後、次のコードを実行して、有効でない場合はチェックして置き換えます

 private void CheckLinkUrl(Person p)
    {
            Uri filePath = new Uri(p.img_url);
            string correct = p.img_url;
            HttpWebRequest fileRequest = HttpWebRequest.CreateHttp(filePath);
            fileRequest.Method = "HEAD";
            fileRequest.BeginGetResponse(result =>
            {
                HttpWebRequest resultInfo = (HttpWebRequest)result.AsyncState;
                HttpWebResponse response;
                try
                {
                    response = (HttpWebResponse)resultInfo.EndGetResponse(result);
                }
                catch (Exception e)
                {
                    p.img_url = "http://somethingelse.com/image.jpg";

                }                    

            }, fileRequest);

    }

問題は、非常に遅いことです。すべての画像を読み込むのに2分以上かかることがあります(ただし、UIは応答性を維持し、画像を除いて、他のすべてはリストボックスにすぐに表示されます)

私は何か間違ったことをしていますか?より速く実行させることはできますか?

編集:私はimagefailedイベントを使用してリンクを置き換えようとしましたが、写真の読み込み速度は向上しませんでした

4

1 に答える 1

2

アプリケーションでこの問題を回避するために行ったことは、デフォルトの画像を使用してアイテムをロードしたことです。画像ソースは、タイプの結果アイテムのプロパティにバインドされていますImageSource。デフォルトでは、デフォルトの画像を返します。処理またはダウンロードの完了後、imagesource値はNotifyPropertyChangedイベントをトリガーする新しい画像に変更されるため、UIに自動的に反映されます。お役に立てば幸いです。

于 2012-09-14T05:14:04.370 に答える