2012-09-13 28 views
0

我得到Windows Phone中的對象列表,並使用數據綁定將它們顯示在列表框中。 一些圖像的URL是無效的,所以每一個對象被添加到列表中後,我運行下面的代碼來檢查,如果不更換,有效windows phone c#檢查有效的URL並替換列表中的foreach項

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事件和更換鏈接,在加載圖片

+0

所以你想加快檢查本身,或者你想並行化他們?我建議你採取米蘭的指示,並設置默認圖像,這將保留空間,並給予初步的視覺提示。稍後,您可以輕鬆地替換圖像。 –

+0

是的,我發現沒有其他辦法,我遵循米蘭的建議,謝謝! – user970012

回答

2

我做了什麼,以避免在我的應用程序這個問題,我已經加載了項目的速度沒有改善試過一個默認的圖像,圖像源綁定到ImageSource類型的結果項目中的一個屬性。默認情況下它會返回默認圖像。處理或下載完成後,圖像源值將更改爲觸發NotifyPropertyChanged事件的新圖像,因此它會自動反映在用戶界面上。我希望它能幫助你。

+0

有沒有辦法加快它,你建議是一個很好的方式來實現它,謝謝:) – user970012

+0

由於webClient-在這種情況下,下載只能一次下載一個項目,我相信這是最高速度哪一個可以在下載方面實現。但下一次如果圖像在緩存中,檢索將會更快。 –