0

Windows Phone 7.5 用のアプリケーションのようなフレクスターを作成しています。今後の映画の写真と映画IDを取得したいコードがあります。しかし、私のコードが完了すると、最初の写真だけがリストボックスの画像に取り込まれます。これは私のコードです:

public void NowPlayinJson(string Uri)
{
  string apiUri = string.Format("{0}{1}{2}10", Uri, ApiKay, PagesLimit);
  WebClient Rclient = new WebClient();

  Rclient.DownloadStringAsync(new Uri(apiUri));
  Rclient.DownloadStringCompleted += (s, e) =>
  {
      if (e.Error == null)
      {
          jsonStringValue = (e.Result.ToString().Trim());
          ImageUri();
       }
  };
}
public void ImageUri()
{
    var ParseImageUri = JObject.Parse(jsonStringValue);
    var ParseToJson = 
        JsonConvert.DeserializeObject<RootObject(ParseImageUri.ToString());

    NowPlayingUri = ParseToJson.movies[0+a].posters.detailed;

    a++;
    DownloadImage();
}


public void DownloadImage()
{
    if (!web.IsBusy)
    {
        web.OpenReadAsync(new Uri(NowPlayingUri), UriKind.Absolute);
    }
    web.OpenReadCompleted += 
        new OpenReadCompletedEventHandler(web_OpenReadCompleted);
} 

void web_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error == null)
    {
        while(i<6)
        {
            var stream = e.Result;

            var bi = new BitmapImage();
            bi.SetSource(stream);

            myNowPlayingList.Add(new NowPlaying() 
                { NowImage = bi, NowTitle = "title" + i });
            i++;
            if (b < 6)
            {
                b++;
                ImageUri();
            }
            if(b == 6)
            {
                b++;
                NowPlayingListBox.ItemsSource = myNowPlayingList;
            }
        }
    }
}
4

1 に答える 1

0

queue保留中のイメージ ダウンロードのリストを維持していないようです。に注意してくださいwebClient can download one Image at a time。ビジー状態の場合はキューに追加してください。ダウンロードが成功したら、キューの長さを確認します。空でない場合は、アイテムをキューから削除し、webClient のダウンロードに追加します。またmaintain a cache、画像が既にキャッシュまたはISにある場合は、そこからダウンロードして表示しないでください。それ以外の場合は、画像をダウンロードキューに追加してください。このアプローチがお役に立てば幸いです。

于 2012-09-14T05:24:03.750 に答える