如何知道在wp7中完成的下载图像?

时间:2012-03-23 05:27:03

标签: download windows-phone-7.1

提前致谢..

我正在从服务器下载一些图像到我的wp7应用程序。为此,我使用以下代码。

ObservableCollection<BitmapImage> biList;
int currentItem;

private void DownloadImages(string[] imageUriList)
{
   biList = new ObservableCollection<BitmapImage>();
   BitmapImage bi;

   for (int i = 0; i < imageUriList.Length; i++)
   {
      bi = new BitmapImage();
      biList.Add(bi);
      bi.UriSource = new Uri(imageUriList[i], UriKind.Absolute);
      biList[i] = bi;
   }
}

之后,我将在Windows Phone应用程序的<Image />控件中逐个显示这些图像。

<Image x:Name="imgImage" />

我正在使用以下代码显示图片

private void ShowImages()
{
   imgImage.Source = biList[0];
   currentItem = 1;
}

单击“下一个”或“上一个”按钮时,图像会发生变化。

private void btnNext_Click(object sender, RoutedEventArgs e)
{
   if(currentItem < biList.Count)
   {
      imgImage.Source = biList[currentItem];
      currentItem += 1;
   }
}

private void btnPrevious_Click(object sender, RoutedEventArgs e)
{
   if(currentItem > 1)
   {
      imgImage.Source = biList[currentItem-2];
      currentItem -= 1;
   }
}

当我试图显示这些图像时,会在一段时间后显示一些图像。

如何确保完整下载图像?

1 个答案:

答案 0 :(得分:3)

您可以使用WebClient下载图像,一旦成功下载,您可以将代码添加到事件处理程序,如下所示:

private void GetImage()
{
    WebClient client = new WebClient();
    client.OpenReadAsync(new Uri("http://website.com/image.jpg"));
    client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
}

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    //Image has been downloaded
    //Do something
}